读书人

接口跟抽象类

发布时间: 2012-10-07 17:28:51 作者: rapoo

接口和抽象类
接口是构造软件松耦合的重要法宝。在java中,接口被设计为只描述类应该做什么,而不涉及任何具体的实现细节。因此,它不能实例化,不能包含构造方法也不能包含实例变量。
抽象类的合理使用可以提高软件的开发效率和代码的重用度。它和接口一样位于抽象层,可以包含抽象方法,但是它可以包含部分实现。
它们二者的不同点,主要体现在两点。
接口可以多继承,抽象类只能单继承。
接口不包含任何具体实现,但是抽象类可以有部分实现。在编码上的表现就是接口不能实例化,没有任何构造函数和实例变量。抽象类可以自己实现了的方法和构造函数以及实例变量。
abstract class和interface所反映出的设计理念不同。其实abstract class表示的是"is-a"关系,体现的是继承的关系;interface表示的是"like-a"关系,体现的是一种契约关系,并不要求interface的实现者和interface定义在概念本质上是一致的。
抽象类可以认为是接口和类的过度,它实现了通用的方法函数,指定了一些特殊方法函数留给子类来实现,从而提高软件的开发效率和代码重用度。接口在系统外界使用者来看提供了可使用的服务,对系统内部来看指定了系统必须实现的服务,从而大大降低了软件的耦合度。
抽象类:
1、抽象类的visibility可以是public也可以是default。不可以是private、final、protected。
2、Abstract类不可以直接实例化。
3、抽象类可以有实例变量,静态的非静态的都可以。
4、抽象方法不可以被final、static、private修饰,因为这些方法不能被继承。抽象方法可以是public也可以是protected。
接口:
1、接口的visibility可以是public也可以是default。不可以是private、final、protected。
2、不可以具有实例变量。成员变量默认为public static final。必须初始化。
3、方法默认是public abstract。

读书人网 >编程

热点推荐