Java系列——abstract, interface比较分析

来源:互联网 发布:淘宝宝贝上传图片问题 编辑:程序博客网 时间:2024/06/06 00:51

1. 在abstract class方式中,Demo可以有自己的数据成员,也可以有非abstarct的成员方法; 而在interface方式的实现中,Demo只能够有静态的不能被修改的数据成员(也就是必须是static final的,不过在interface中一般不定义数据成员),所有的成员方法都是abstract的。从某种意义上说,interface是一种特殊形式的abstract class。

2. Java只能继承单个class(C++是可以实现多继承的),但是可以实现多个interface。下一点根据本质区别进行详细介绍。

3. 设计方面的本质区别。要满足核心原则ISP(Interface Segregation Priciple),即abstract表示的还是继承的概念,也就是说其具有继承的意义:派生类与基类之间有“is a”的关系,而interface则是作为一个单独的功能接口模块加到派生类中。根据物理世界的意义,对于继承只能有一个(难道还能is a多个事物吗),但是可以不断的增加新的功能接口模块。

4. interface只能被public和abstract修饰,而不能被其他的修饰符修饰。

0 0