想去放牛

导航

 

  Java 接口和 Java 抽象类代表的就是抽象类型,就是我们需要提出的抽象层的具体表现。OOP 面向对象的编程,

如果要提高程序的复用率,增加程序的可维护性,可扩展性,就必须是面向接口的编程,面向抽象的编程,正确地使用
接口、抽象类这些太有用的抽象类型做为你结构层次上的顶层。
  
  1、Java 接口和 Java 抽象类最大的一个区别,就在于 Java 抽象类可以提供某些方法的部分实现,而 Java 接口不
可以,这大概就是 Java 抽象类唯一的优点吧,但这个优点非常有用。如果向一个抽象类里加入一个新的具体方法时,
那么它所有的子类都一下子都得到了这个新方法,而 Java 接口做不到这一点,如果向一个 Java 接口里加入一个新方
法,所有实现这个接口的类就无法成功通过编译了,因为你必须让每一个类都再实现这个方法才行。
  
  2、一个抽象类的实现只能由这个抽象类的子类给出,也就是说,这个实现处在抽象类所定义出的继承的等级结构
中,而由于 Java 语言的单继承性,所以抽象类作为类型定义工具的效能大打折扣。 在这一点上,Java 接口的优势就
出来了,任何一个实现了一个 Java 接口所规定的方法的类都可以具有这个接口的类型,而一个类可以实现任意多个
Java 接口,从而这个类就有了多种类型。
  
  3、从第 2 点不难看出,Java 接口是定义混合类型的理想工具,混合类表明一个类不仅仅具有某个主类型的行为,
而且具有其他的次要行为。
  
  4、结合 1、2 点中抽象类和 Java 接口的各自优势,具精典的设计模式就出来了:声明类型的工作仍然由 Java 接
口承担,但是同时给出一个 Java 抽象类,且实现了这个接口,而其他同属于这个抽象类型的具体类可以选择实现这个
Java 接口,也可以选择继承这个抽象类,也就是说在层次结构中,Java 接口在最上面,然后紧跟着抽象类,哈,这下
两个的最大优点都能发挥到极至了。这个模式就是“缺省适配模式”。 在 Java 语言 API 中用了这种模式,而且全都
遵循一定的命名规范:Abstract +接口名。
  
  Java 接口和 Java 抽象类的存在就是为了用于具体类的实现和继承的,如果你准备写一个具体类去继承另一个具
体类的话,那你的设计就有很大问题了。Java 抽象类就是为了继承而存在的,它的抽象方法就是为了强制子类必须去实现的。
使用 Java 接口和抽象 Java 类进行变量的类型声明、参数是类型声明、方法的返还类型说明,以及数据类型的转
换等。而不要用具体 Java 类进行变量的类型声明、参数是类型声明、方法的返还类型说明,以及数据类型的转换等。
我想,如果你编的代码里面连一个接口和抽象类都没有的话,也许我可以说你根本没有用到任何设计模式,任何一个
设计模式都是和抽象分不开的,而抽象与 Java 接口和抽象 Java 类又是分不开的。接口的作用,一言以蔽之,就是标志类的类别。
把不同类型的类归于不同的接口,可以更好的管理他们。把一组看似不相关的类归为一个接口去调用.可以用一个接口型的变量来引用一个对象。
posted on 2022-04-11 14:12  想去放牛  阅读(25)  评论(0编辑  收藏  举报