a) abstract class 在 Java 语言中表示的是一种继承关系,一个类只能使用一次继承关系。但是,一个类却可以实现多个interface。接口弥补了类的多继承问题。
b) 在abstract class 中可以有自己的数据成员,也可以有非abstract的成员方法,而在interface中,只能够有静态的不能被修改的数据成员(即常量:也就是必须是static final的),所有的成员方法都是abstract的。
c) abstract class和interface所反映出的设计理念不同。其实abstract class表示的是"is-a"概念,interface表示的是"has a"概念。 注意:当一个行为与一个类的所属行为方法不相关联时,应该采用接口来实现这个行为,不能使用抽象类,否则违反面向对象的ISP(Interface Segregation Principle)接口隔离原则和OCP(Open Close Principle)开闭原则。
d) 接口中的方法默认都是 public abstract的; 属性默认是public final static。
e) 不管是抽象类还是接口都可以实现多态性,开发设计中一般优先使用接口,其次才考虑抽象类和继承。
abstract class和interface有什么区别?
最新推荐文章于 2021-11-19 10:41:54 发布