欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

第四章 类和接口 第18条 接口优于抽象类

程序员文章站 2023-12-21 13:15:34
...

抽象类的限制:只允许单继承(使用内部类可以模拟多重继承)

接口的优点:

  1. 方便现有类的扩展
  2. 接口是定义mixin(混合类型的理想选择)
  3. 接口允许我们构造非层次结构的类型框架,接口之间可以实现多重继承
  4. 通过包装类模式,接口使得安全地增强类的功能成为一种可能,如果使用抽象类来定义类型,那么 程序员队了使用继承的手段来增加功能,没有其它的选择,这样得到的类与包装类相比,功能更差,也更加脆弱
  5. 通过对你导出的第个重要接口都 提供一个抽象的骨架实现类,把接口和抽象类的优点结合起来

下面是骨架实现类的使用:

public class ArrayUtil {
	
	static List<Integer> intArrayAsList(final int[] a){
		return new AbstractList<Integer>(){

			
			@Override
			public Integer get(int index) {
				
				return a[index];
			}

			public Integer set(int index,Integer value) {
				int oldValue = a[index];
				a[index] = value;
				return oldValue;
			}
			
			@Override
			public int size() {
				return a.length;
			}
			
		};
	}
}

骨架实现结合了接口有抽象类的优点:即提出了需求,又提供了最基本的帮助,骨架实现是为继承而设计的,对于继承,必需提供文档说明

骨架实现有个小小的不同,就是简单实现,如AbstractMap,这是为继承而设计的, 是一个最简单的实现,可以直接使用,也可以子类化

抽象类对比接口的明显优势:抽象类的演变比接口演变要容易得多,抽象类的中实现方法可以随意添加,而接口不行

骨架实现可以做为接口和具体实现类中的缓冲地带,因为接口一旦被公开发行,并且被广泛实现,想要修改几乎不可能 

上一篇:

下一篇: