梦在远方,路在脚下
posts - 2, comments - 1, trackbacks - 0, articles - 8

抽象类与接口

Posted on 2009-02-03 12:21 栗衙 阅读(189) 评论(1)  编辑  收藏 所属分类: 程序钟摆

抽象类与接口

1 定义

抽象类:所有的对象都是通过类来描绘的,但是反过来却不是这样。并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。

例如

2 语法

2.1 abstract class

可以有自己的数据成员

有非abstarct的成员方法

继承关系,一个类只能使用一次继承关系

可以赋予方法的默认行为

因为如果后来想修改类的界面(一般通过abstract class或者interface来表示)以适应新的情况(比如,添加新的方法或者给已用的方法中添加新的参数)时,就会非常的麻烦,可能要花费很多的时间(对于派生类很多的情况,尤为如此)。但是如果界面是通过abstract class来实现的,那么可能就只需要修改定义在abstract class中的默认行为就可以了。

    同样,如果不能在抽象类中定义默认行为,就会导致同样的方法实现出现在该抽象类的每一个派生类中,违反了"one ruleone place"原则,造成代码重复,同样不利于以后的维护。因此,在abstract classinterface间进行选择时要非常的小心。

2.2 interface

只能够有静态的不能被修改的数据成员

所有的成员方法都是abstract

实现关系,一个类却可以实现多个interface

不可以赋予方法的默认行为

3 设计理念

abstarct class:父类和派生类之间必须存在"is a"关系,即父类和派生类在概念本质上应该是相同的

3.1 interface

不要求interface的实现者和interface定义在概念本质上是一致的,仅仅是实现了interface定义的契约而已

4 实例

AlarmDoor在概念本质上是Door

同时它有具有报警的功能

abstract class Door {

abstract void open();

abstract void close()

}

interface Alarm {

void alarm();

}

class AlarmDoor extends Door implements Alarm {

void open() { … }

void close() { … }

void alarm() { … }

}

Feedback

# re: 抽象类与接口  回复  更多评论   

2009-02-05 09:17 by Xixi
为妹妹的开播而欢呼

只有注册用户登录后才能发表评论。


网站导航: