如何理解接口和抽象类 或何时用接口何时用抽象类
来源:互联网 发布:淘宝达人个人简介模版 编辑:程序博客网 时间:2024/06/15 13:02
以一个Door的为例,该Door具有执行两个动作 Open 和Close
此时可以用接口和抽象类两种方法来定义
---------
abstract class Door{
abstract void open();
abstract void close();
}
---------
interface Door{
void open();
void close();
}
其他的具体的Door可以用上述接口和抽象类中的任何一个,现在若要求Door还具有报警的功能呢 如何处理
解决方案一:
---------
abstract class Door{
abstract void open();
abstract void close();
abstract void alarm();
}
或
interface Door{
void open();
void close();
void alarm();
}
那么具有报警功能的Door如下:
class AlarmDoor extends Door{
void open();
void close();
void alarm();
}
或
class AlarmDoor implements Door{
void open();
void close();
void alarm();
}
这种方法违反了ISP原则:在Door的定义中,把Door概念本身固有的行为方法和 另外一个概念“报警器”的行为方法混在了一起,若是这样,那些仅仅依赖于Door这个概念的模块,会因为“报警器”这个概念的改变而改变。
解决方案二:
既然open,close和alram是两个不同的概念,根据ISP原则应该分别定义在两个概念的抽象类中,定义方式有 定义2个抽象类,定义一个抽象类一个接口。
但是Java不支持多继承 所以最后方案如下:
---------------------------------------------
class AlarmDoor extends Door{
void open();
void close();
}
interface Alarm {
void alarm()
}
class AlarmDoor extends Door implements Alarm{
void open(){.....}
void close(){.....}
void alarm(){.....}
}
总结:这个例子非常贴切。自己体会吧
- 如何理解接口和抽象类 或何时用接口何时用抽象类
- 何时用抽象类,何时用接口?
- 黑马程序员-何时使用抽象类和接口的理解
- 抽象类与接口区别,何时使用
- 初探设计:Java接口和抽象类何时用?怎么用?
- 何时用类?何时用接口?
- 理解接口和抽象类
- 理解抽象类和接口
- 理解抽象类和接口
- 抽象类和接口理解
- 接口和抽象类理解
- 转载 何时用接口
- 抽象接口和抽象类
- 何时抽象?
- 如何理解抽象类和接口的区别
- 我是如何理解Java抽象类和接口的
- 我是如何理解Java抽象类和接口的
- 我是如何理解Java抽象类和接口的
- Android Looper和Handler分析
- 使用双缓冲让界面绘制图形时避免闪烁 整理
- qss
- 动态加载用户控件函数
- 周末写了个 monitor filesystem shell ( crontab 定时监控)
- 如何理解接口和抽象类 或何时用接口何时用抽象类
- 原来《精通Dojo》里用的dojo版本不超过1.1.2,而现在都1.5了……
- hadoop 配置
- javascript 注意
- SQL Server删除所有表的小脚本
- Linux/Unix环境下的make和makefile详解(非常详细)
- C语言程序设计综合作业报告——作业管理系统
- Copy txt file
- 效率最高的Excel数据导入---(c#调用SSIS Package将数据库数据导入到Excel文件中)