标签:面向对象 interface abstract class 抽象类
挺不错的文章,以面向对象设计的高度审视抽象类和接口的本质
原文地址:http://dev.yesky.com/436/7581936.shtml
在 Java 语言中, abstract class 和 interface 是支持抽象类定义的两种机制。正是由于这两种机制的存在,才赋予了Java强大的面向对象能力。abstract
class和interface之间在对于抽象类定义的支持方面具有很大的相似性,甚至可以相互替换,因此很多开发者在进 行抽象类定义时对于abstract class和interface的选择显得比较随意。其实,两者之间还是有很大的区别的,对于它们的选择甚至反映出对 于问题领域本质的理解、对于设计意图的理解是否正确、合理。本文将对它们之间的区别进行一番剖析,试图给开发者提供一个在二者之间进行选择的依据。
理解抽象类
abstract class Demo{ abstract void method1(); abstract void method2(); … } |
interface Demo{ void method1(); void method2(); … } |
abstract class Door{ abstract void open(); abstract void close(); } |
interface Door{ void open(); void close(); } |
abstract class Door{ abstract void open(); abstract void close(); abstract void alarm(); } |
interface Door{ void open(); void close(); void alarm(); } |
class AlarmDoor extends Door{ void open(){…} void close(){…} void alarm(){…} } |
class AlarmDoor implements Door{ void open(){…} void close(){…} void alarm(){…} } |
abstract class Door{ abstract void open(); abstract void close(); } interface Alarm{ void alarm(); } class Alarm Door extends Door implements Alarm{ void open(){…} void close(){…} void alarm(){…} } |
标签:面向对象 interface abstract class 抽象类
原文地址:http://blog.csdn.net/zq602316498/article/details/39431025