zoukankan      html  css  js  c++  java
  • 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。

  • 相关阅读:
    测试的种类
    软件测试的原则
    软件测试的目的
    软件测试的对象
    软件的分类
    软件测试
    mysql 视图
    mysql 字段添加以及删除
    mysql 引擎类型
    mysql 数据插入insert
  • 原文地址:https://www.cnblogs.com/twzheng/p/5920552.html
Copyright © 2011-2022 走看看