抽象类的好处在于, 我们可以笼统地定义一个类而不需要一次想到这个类的所有细节, 这就提高了java语言面向对象的能力
尽管抽象类和接口之间存在较大的相同点,甚至有时候还可以互换,但这样并不能弥补他们之间的差异之处。下面将从语法层次和设计层次两个方面对抽象类和接口进行阐述。
语法层次
在语法层次,java语言对于抽象类和接口分别给出了不同的定义。下面已Demo类来说明他们之间的不同之处。
使用抽象类来实现:
- public abstract class Demo {
- abstract void method1();
- void method2(){
- //实现
- }
- }
使用接口来实现:
- interface Demo {
- void method1();
- void method2();
- }
抽象类方式中,抽象类可以拥有任意范围的成员数据,同时也可以拥有自己的非抽象方法,但是接口方式中,它仅能够有静态、不能修改的成员数据(但是我们一般是不会在接口中使用成员数据),同时它所有的方法都必须是抽象的。在某种程度上来说,接口是抽象类的特殊化。
对子类而言,它只能继承一个抽象类(这是java为了数据安全而考虑的),但是却可以实现多个接口。
完整版:
http://blog.csdn.net/chenssy/article/details/12858267