接口 抽象类的最终形态
接口的使用细节
- 接口不能被实例化,就如抽象类一般
- 接口中所有的方法都是默认为为public,接口中的抽象方法可以不用abstract修饰,默认为抽象
- 一个普通实类实现接口,必须将接口的所有方法都实现,可以借助自动提示的快捷键。
- 抽象类实现接口,可以不用implements接口的方法;就像抽象类继承抽象,不用重写抽象方法
- 一个类同时实现多个接口 用“,”隔开接口名即可,但是两个接口的方法需要全部实现
- 接口的属性,只能时public final static,所以可以用接口名直接访问接口的属性
- 接口不能继承其他类,但是可以继承多个接口
- 接口的修饰符只能是public和默认,这点和类的修饰符相似
接口和继承类的比较关系
实现的机制是对Java单继承机制的补充
当子类继承父类,就自动拥有父类的功能,如果子类需要扩展,可以实现接口的方式扩展。
interface Fishable{
void swimming();
}
class LittleMonkey extends Monkey implements Fishable{
public LittleMonkey(String name) {
super(name);
}
@Override
public void swimming() {
System.out.println(getName()+"通过学习,可以像鱼儿一样游泳");
}
继承解决复用性问题,接口注重拓展
继承 is - a的关系,接口满足like - a的关系
接口的多态
- 接口类型的变量,可以指向实现接口的对象实例;父类类型的变量可以指向继承了父类的对象实例(向上转型)
- 多态数组,接口类型的数组可以存放实现了接口的对象;和继承的数组相似
- 接口的多态传递
public class interfacePolypass {
public static void main(String[] args) {
IG ig = new Teacher();
IH ih = new Teacher();
}
}
interface IH{}
interface IG extends IH{}
class Teacher implements IG{
}
可以通过继承关系,创建ih类型的teacher
其实前两点和普通的oop多态没什么区别
类的五大成员
- 属性
- 方法
- 构造器
- 代码块
- 内部类
今天又学习了接口这个知识点,明天学习内部类,每天进步一点点,加油大家