接口
意义 : 【1】接口中定义的一些系列方法表示的是一种种的能力。接口让实现类实现这些能力,实现类的能力得到拓展和升级。实现类根据自身特性实现接口中定义的方法。
【2】接口也可表示一种约定(协议),约定(规范)了实现类应该具备(has a)的能力。
【3】实现类必须实现接口中所有的方法,所以接口规范了实现类的行为
关键字 : interface
public interface MyInterface { public static final String version = "1.0"; public int count = 10; // 默认是static final类型 }
特性:【1】接口可以声明变量都是static final 的类型
【2】接口中的方法都是公共抽象方法 (省略不写 abstract 一定是抽象方法)
【3】接口不能拥有构造方法和创建对象
【4】接口可以继承,一个接口可以继承多个接口
【5】一个类可以实现一个或者多个接口,该类称为实现类,实现类必须实现接口中的所有抽象方法;
注意:一个类只能继承一个父类,同时实现多个接口。继承在前,实现在后。
public class ImplClass3 extends AbsClass implements AInterface,BInterface
{
}
接口实现多态和继承实现多态:
【1】接口实现多态: 接口类型 引用 实现类对象
【2】继承实现多态: 父类类型 引用 子类对象
【3】接口定义的方法被实现类实现,通过接口引用实现类时,调用接口中的方法时,执行的是实现类实现的方法。
【4】实现类对象具备接口中定义的能力 是一种has a 关系
【5】子类对象是一种父类类型 是一种is a 关系
抽象类和接口的异同比较:
【1】 抽象类和接口都是引用数据类型,他们都不能创建对象。
【2】他们都可以定义抽象方法,都可以实现多态。但是抽象类可以定义非抽象方法,而接口中定义的都是抽象方法。
【3】抽象类和接口都具有传递性。抽象类是单根性(单继承),而接口是多继承。
【4】在概念上,都可以重写抽象方法。子类重写抽象类,实现类实现接口
【5】抽象类和子类解决的是模块内的问题(代码重用,重写,多态)而接口解决的是模块间的问题 => 高内聚,低耦合。接口可以用解耦模块。