抽象类 vs 接口(Java)
2009-06-04 16:02
239 查看
对于abstract class和interface的选择反映出对于问题领域本质的理解、对于设计意图的理解是否正确、合理。
一个类可以继承多个接口,当没有缺省的实现用来继承时,通常使用接口而不适用抽象类。
抽象类可以有私有方法和私有成员,接口是公开的,里面不能有私有成员和方法。
抽象类中可以赋予方法默认行为,接口中方法不能有默认行为。
实现抽象类可以有选择地重写需要用到的方法,实现接口的一定要实现接口里定义的所有方法。
接口可以实现多重继承,而一个类只能继承一个父类,但可以通过继承多个接口实现多重继承。
抽象类中可以有自己的数据成员,默认是protected 型,其值可以在子类中重新定义,也可以重新赋值。接口中只能够有静态的不能被修改的数据成员 即必须是static final(默认为public static final) 的并必须给其初值(接口中一般不定义数据成员)
抽象类中可以有abstract的成员方法,也可以有非 abstract的成员方法 接口中所有的成员方法都是abstract的,默认都是 public abstract 类型
两者都不能被实例化。 从某种意义上说,interface是一种特殊形式的 abstract class 一般的应用里,最顶级的是接口,然后是抽象类实现接 最后才到具体类实现。
抽象类主要用来进行类型隐藏,在Java语言中体现了一种继承关系 要想使得 继承关系合理 父类和派生类之间必须存在"is-a"关系,即父类和派生类在概念本质上应该是相同。 对于接口则并不要求接口的实现者和接口定义在概念本质上是一致的, 仅仅是实现了接口定义的契约而已。
通过接口定义行为能够更有效地分离行为与实现,为代码的维护和修改带来方便,其中的关键在于区分对象的行为和对象的实现
行为模型应该总是通过接口而不是抽象类定义 行为模型应该总是通过接口而不是抽象类定义
一个类可以继承多个接口,当没有缺省的实现用来继承时,通常使用接口而不适用抽象类。
抽象类可以有私有方法和私有成员,接口是公开的,里面不能有私有成员和方法。
抽象类中可以赋予方法默认行为,接口中方法不能有默认行为。
实现抽象类可以有选择地重写需要用到的方法,实现接口的一定要实现接口里定义的所有方法。
接口可以实现多重继承,而一个类只能继承一个父类,但可以通过继承多个接口实现多重继承。
抽象类中可以有自己的数据成员,默认是protected 型,其值可以在子类中重新定义,也可以重新赋值。接口中只能够有静态的不能被修改的数据成员 即必须是static final(默认为public static final) 的并必须给其初值(接口中一般不定义数据成员)
抽象类中可以有abstract的成员方法,也可以有非 abstract的成员方法 接口中所有的成员方法都是abstract的,默认都是 public abstract 类型
两者都不能被实例化。 从某种意义上说,interface是一种特殊形式的 abstract class 一般的应用里,最顶级的是接口,然后是抽象类实现接 最后才到具体类实现。
抽象类主要用来进行类型隐藏,在Java语言中体现了一种继承关系 要想使得 继承关系合理 父类和派生类之间必须存在"is-a"关系,即父类和派生类在概念本质上应该是相同。 对于接口则并不要求接口的实现者和接口定义在概念本质上是一致的, 仅仅是实现了接口定义的契约而已。
通过接口定义行为能够更有效地分离行为与实现,为代码的维护和修改带来方便,其中的关键在于区分对象的行为和对象的实现
行为模型应该总是通过接口而不是抽象类定义 行为模型应该总是通过接口而不是抽象类定义
相关文章推荐
- Java 抽象类 vs 接口
- Java基础10 接口的继承与抽象类
- Java中抽象类和接口的用法和区别
- java中的抽象类与接口
- java中的抽象类和接口区别于联系
- Java中final关键字,抽象类与接口
- Java的接口与抽象类的深入理解
- java语言的特定结构-接口、抽象类
- JAVA 继承基本类、抽象类、接口
- java 接口和抽象类
- java 抽象类和接口
- Java中抽象类与接口10问10答
- 深入理解Java的接口和抽象类
- 黑马程序员_Java基础_面向对象(继承、子父类变量和函数以及构造函数特点、final关键字、抽象类、模版方法模式、接口)
- java面向对象之接口与抽象类
- 深入理解Java的接口和抽象类
- Java面向对象思想、类、抽象类、多态、接口
- java——抽象类与接口
- java中抽象类与接口中方法访问修饰符问题
- 详细解析Java中抽象类和接口的区别