Java abstract class 和 interface 的区别

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java abstract class 和 interface 的区别相关的知识,希望对你有一定的参考价值。

Java abstract class 和 interface 的区别

1. abstract class和interface是Java语言中对于抽象类定义进行支持的两种机制

2. 以Door的抽象概念为例,门一般有open和close动作,如果只有这些,通过abstract class或者interface来定义都可以,看起来没问题。

3. 但是Door应该还有一些抽象的属性,比如状态,大小、形状、材质等,这些放在interface定义里就不合适了(注:interface的成员变量必须是public static final的),应该用abstract class来定义,所以对同一类事物/问题域的抽象化定义应该用abstract class,比如鸟类、形状等。

4. 我们再想想,如何做一个有报警功能的AlarmDoor类,在abstract class里加alarm()方法不太合适吧,因为不是所有的门都有报警功能,也不能再定义Alarm的abstract class,因为Java不允许多重继承,这里应该用interface来定义,AlarmDoor实现IAlarm接口就可以了。所以对一个具体的类要实现某些新功能,可以通过interface来标准化。标准化的IAlarm接口还可以给其他需要报警功能的类使用,比如AlarmWindow。

 

以上是关于Java abstract class 和 interface 的区别的主要内容,如果未能解决你的问题,请参考以下文章

抽象类(abstract class)和接口(interface)Java面试题

java中abstract Class 与 Interface的区别

Java中abstract class 和interface的区别

Java中abstract class 和interface的区别

Java中抽象类和接口的区别(abstract class VS interface)

抽象类(abstract class)和接口(interface)Java面试题