接口
文章目录
1.接口的特点
-
接口使用interface关键字修饰
-
接口由抽象方法和常量组成
- 常量:默认接口所有成员变量都省略public static final
- 抽象方法:默认所有成员方法都省略public abstract
-
接口不能实例化,需要通过父类接口指向子类实现类(多态)
-
接口实现类:使用implement关键字实现
- 子类不实现接口时,升级为接口
- 子类要实现接口时,必须把接口所有抽象方法进行实现
-
接口可以解决继承不能选择的把所有功能继承,可以选择不同功能的接口进行多实现
-
接口可以多继承
-
接口是规范
-
接口与类之间的关系
继承规则 实现规则 类与类 单继承 不可以实现 类与接口 不能继承 多实现 接口与接口 多继承 不可以多实现 -
实现复杂功能时用继承,实现简单功能时用接口,开发中一般采用面向接口编程
2.接口的动态绑定思维
//动态思维Demo1
interface IPerson {
//void use(CalculatorImpl calculator)
//void use(ComputerImpl computer)
//使用接口作为形参可以节约代码
//可以使用多态动态绑定思维:
//ICalculate calculate = new CalculatorImpl
//ICalculate calculate = new ComputerImpl
void use(ICalculate calculate);
}
//接口
interface ICalculate {
void getSum();
}
//实现类1
public CalculatorImpl implements ICalculate {
public void getSum(){
方法体1;
}
}
//实现类2
public ComputerImpl implements ICalculate {
public void getSum(){
方法体2;
}
}
//接上述的例子:动态思维Demo2
public class InterfaceDemo {
public static void main(String[] args) {
// 利用多态创建
//Student student = new Student();
//假如使用的是Student实现类,想换新的对象时就需要创建新的对象
//与上述Demo一样,假如有多个Iperson实现类
//利用多态的动态绑定思维,就可以随时改变对象
IPerson p = new Student();
//p = new Teacher()
// 利用多态创建
ICalculate calculate = new CalculatorImpl;
p.use(calculate);
ICalculate calculate = new ComputerImpl;
p.use(calculate);
}
}
public class Student {
void use(ICalculate calculate){
重写方法体;
}
}