PHP adstract抽象类与抽象方法

来源:互联网 发布:lua php 性能 编辑:程序博客网 时间:2024/05/17 02:41

C#中抽象类与抽象方法用关键字abstract表示

抽象类的特点:

1、抽象类不能实例化。 

2、抽象类可以包含抽象方法和抽象访问器。 

3、不能用 sealed(C# 参考)修饰符修改抽象类,这意味着抽象类不能被继承,在继承类中重写抽象方法时,要用override关键字。 

4、从抽象类派生的非抽象类必须包括继承的所有抽象方法和抽象访问器的实实现。 

在方法或属性声明中使用 abstract 修饰符以指示方法或属性不包含实现。 


例子:

一个抽象类可以包含抽象方法:

public abstract class Animal

{

public abstract  string Eating();

}

......

public class Cow : Animal//继承抽象类

{

public override string Eating()//要加override关键字重写抽象类方法

{

//Code

}//必须重写方法


}

当一个类继承与抽象类时,它必须实现所有的抽象方法,如在抽象类Animal中再加一个抽象类如:

public abstract string Eating();

public abstract void Feeding();

则必须在继承类中实现


注意:

1.抽象方法声明只能在抽象类中

2.抽象方法只提供一个模板,没有方法体,方法体在继承类中实现。

3.抽象方法的申明可是是私有的,并非都是公开的。

4.没有抽象的静态方法,即abstract 与 static一起用,因为静态方法可以直接调用,可抽象方法必须继承类去实现。



另外一种,大家要记住啊,别产生误区呀。

不含抽象方法的抽象类

例子:

public abstract class Animal

{

public void Feed()//不是抽象方法

{

Console.WriteLine("......");

}

}

......


public class Cow : Animal//继承抽象类

{

//

}

......

class Nnn:Cow

{

static void Main(string[] args)

{

Cow cows = new Cow();//实例化Cow,不是Animal,class Animal 是不可以实例化的

cows.Feed();//可直接调用

}

}


还有的抽象类中既有抽象方法,又有非抽象方法

如:

public abstract string Eating();//抽象方法

public void Feed()//非抽象方法

{

Console.WriteLine("....");

}