您的位置:首页 > 编程语言 > Java开发

JAVA中的abstract 和 interface

2012-11-16 10:17 155 查看
abstract class 和 interface是Java语言中对于抽象类定义进行支持的两周机制,正是由于这两周机制的存在,才赋予了Java强大的面向对象的能力。abstract class和interface之间对抽象类定义的支持方面具有很大的相似性,甚至可以相互替换,因为很多developer在进行抽象类定义时对于abstract calss 和interface的选择显得比较随意,其实两者之间还是有很大区别的。

(1)语法定义层面

abstract class Demo {
abstract void func1();

abstract void func2();

private void func3() {
}
}


interface Demo {
void func1();

void func2();
}


在abstract class方式中,Demo可以有abstract数成员,也可以有非abstract数据成员和方法, 而在interface方式实现中,Demo只能有static final的数据成员,但在interface中一般不定义数据成员,而且所有的成员方法都是abstract的。

abstract class在Java语言中表示的是一种继承关系,Java类只能实现单继承,但是,却可以实现多个interface。

(2)设计理念层面

abstract class在Java中体现的是一种继承关系,父类和派生类之间必须存在“is-a”关系,即父类和派生类在概念本质上应该是相同的。

但是interface则不然,并不要求interface的实现者和inferface定义在概念本质上是一致的,仅仅是实现了interface定义的契约而已。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: