多态

抽象类和接口

接口是某些公共的要求,规定实现他的类必须实现某些方法,但它本身不去实现这些方法,只要求实现他的类必须实现某些方法(接口中方法不能声明public、private等)
抽象类是某些公共的具体的实现,包含让子类都可以使用的公共的方法。

抽象方法(abstract)和虚方法(virtual)

抽象方法本身没有实现,要求继承了该抽象类(含有抽象方法的一定是抽象类)的子类(不是抽象类的话)必须实现这个抽象方法。
虚方法本身必须有实现,继承了该类的子类可以重写或不重写该虚方法。

接口就相当于抽象类中只定义了抽象方法,为什么要有接口呢??因为累是单继承,接口可以多继承啊!!

如果有A、B、C三个类,他们有一些各自的特性(与其他类不同的方法),A和B有完全相同的方法a(),有相同的方法但因为AB的特性会有不同表现的方法b(),这样我们可以提取一个抽象类abstract class AbstractAB(){public void a(){...} public abstract void b();}。A和C又有一些相同的方法,这时就不能取抽象类了,我们需要一个接口public interface IAC{void ac();}。这样就可以把三个类都相同的方法提取一个抽象类AbstractABC,AB相同的方法提取一个接口IAB,BC相同的方法提取一个接口IBC。

这样就可以写成:
class A:AbstractAB,IAC
{public override void b(){} public void ac(){}}
class B:AbstractABC,IAB,IBC
{public override void b(){}}
class C:IAC
{public void ac(){}}

posted @ 2012-03-18 09:40  捂汗  阅读(182)  评论(0编辑  收藏  举报