`
langlanglanglang
  • 浏览: 31831 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

接口和抽象类

 
阅读更多
   接口是构造软件松耦合的重要法宝。在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。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics