单继承丧失了丰富度,因此使用接口来补充丰富度缺失的问题;
案例: 实现汽车的发动机调试、换机油动作
以下特殊情况, ①车以外的抽象类,交通工具、战斗机;
②交通工具以外的机械;
因此,导致了抽象类以外的具有相同方法的如何定义?
避免将方法一次绑定死
!! 相同行为在
其他抽象类中重复定义
!!!脱离继承树的限制实现继承,提高扩展性和自由度;
1、在jdk1.8中接口拥有可以书写实现了的方法:
public
interface Test { //接口命名
public final static int a = 100; //属性书写;
public abstract void turnupEnginee( ); //方法书写;
public
default void methodA(){
//接口方法实现;
}
}
2、接口实现方法: // 类实现接口 服务
public class Tank
implements
Serviceable{
}
3、实现接口的同时还能实现继承 // 抽象方法也可以多现实接口:
抽象方法的子类是否都有的接口类型是什么:
public
abstract class Car
implements ChangeOil
able , TurnupEnginee
able{
} 公开访问的抽象类 汽车 实现接口 换机油 和调试发动机 ;
public class Alto
extends Car{
}
子类要继承抽象类的什么行为;还需要自己增加哪些接口
public class Alto
extends Car
implements ChangeOil
able , TurnupEngineeable{
} 公开访问类 奥拓车继承了车的开车 实现了接口换机油和调试发动机;
4、接口继承接口:
public
interface Serviceable
extends ChangeOil
able , TurnupEngineeable{
public void methodA( );
}
5、使用:
方法: 重载 -- 构造器 对本类的方法进行不同形参传入的书写(吃饭的不同工具);
继承: 重写 本类引用指向本类对象;
多态: 重写 + 动态绑定 父类引用指向子类对象;
接口: 接口引用指向实现类的对象;
案例:
ChangeOilable audi = new Audi();
①通过实现接口暴露信息:
第一步:
public interface Payable{
public void computePay ( int hoursWorked );
public void mailCheck ( );
}
支付接口 可以直接实现计算工资 和 邮寄的行为; 给个接口给其形参,就可以直接调用这些方法;
第二步:将以上接口定义的方法,
在Employee类中实现; 把计算工资和邮寄行为进行具体实现;
第三步:在其他类中书写的
方法通过实参传入进去;
②通过实现接口强制
具有某些行为
:
第一步:设计接口的具体的方法(包含各种存放属性的方法);
第二步,将该接口传入一个类中的方法的形参,在方法中将信息保存在一个数组中;
该类中的其它所有方法都调用该数组中的接口方法;
因此,要实现该类的方法就必须传入一个接口的实现实例化对象
;
第三步,具体实现一个接口类;
接口类实例化之后,将其传入上个类实例化调用的方法的形参;