abstract修饰符 和 interface修饰符

================================================================================================
abstract

首先,用abstract(抽象)修饰符指示所修饰的内容是缺少实现或未完全实现的。
abstract 修饰符可用于类、方法、属性、索引器和事件(不能修饰字段),只有抽象类中才能声明抽象的方法、属性、索引器和事件(当然其中也可以有非抽象的成员)。
抽象类只能是基类,它不能实现自己的实例,因此也就不能为static,标记为抽象或包含在抽象类中的成员必须通过从抽象类派生的类用override来实现。
被声明为抽象的方法不能有自己的方法体,只能这样:public abstract void fun();在抽象类中声明,而且在子类中必须最终实现它。

abstract修饰符其实很好理解,就是对那些从面向对象的思想中某一类的抽象出来的类进行修饰,所以它的使用意义就在这里。然后明白它的一些规定,就可以了。

其次,还有很多人把abstract和interface混淆,其实这也是两个毫不相干,不同层面的东西,要说勉强说他们的共性只能说都是用到OOP总的抽象思想,下面结合《大话设计模式》一书中的表述和自己的说明阐明一下:

从代码层面上:
抽象类可以给出一些成员的实现,接口却不包含成员的实现,抽象类的抽象成员可以被子类实现,抽象成员需要实现类完全实现(即抽象类中可以有非抽象成员,他们可以有自己实现的内容,而且被子类继承时那些抽象的成员也可以实现;但是接口却不同,他们必须在继承它们的类中实现)。
一个子类只能继承一个父类,但是可以有多个接口

利用接口有两种方式:隐式执行接口成员和显式执行接口成员
其中隐式可以通过类和接口访问,而显式只能通过接口访问

从他们的思想用途上:
1、思想上:类是对对象的抽象,而接口是对行为的抽象(觉得行为这个词用的很好);
2、用途上:如果行为跨越不同的对象用接口,对于一些类似的类,用抽象类继承;
3、关系上:不是冲突的
4、设计角度上:抽象类是从子类中发现了公共的东西,泛化出父类,然后子类继承父类,而接口设计时根本就不知道或者根本不用考虑子类的存在,方法如何实现还不确认,预先定义。

以上几点应该很容易让大家明白 接口 是怎么一回事了吧?
interface

最后,说说接口的用法和用途。

1、接口 interface 只包含 方法、属性、事件或索引器的签名(即不包括实现内容,和抽象成员类似,不能有具体的实现);
2、实现接口的类或结构必须实现接口中定义的接口成员(这个和抽象类的继承有类似,必须在使用它的类中完善他)
3、我们已经知道了接口是对行为的一种抽象,那么很明显,就不能限制一个类只能有一个,所以,一个类可以有多个接口。

posted on 2012-04-19 21:03  独行沙漠人  阅读(1673)  评论(0编辑  收藏  举报

导航