java基础-接口

2024-03-07


接口就是规范
一个类可以实现多个接口
	一定程度上弥补了类单继承的局限性
类必须实现接口中所有的抽象方法, 才能实例化,否则此实现类必须声明为抽象类
接口可以多继承接口

内部结构

属性必须使用public static final修饰
	可以省略
不可以声明构造器、代码块

声明方法

jdk8之前,需要声明为抽象方法,修饰符为public abstract
	可能省略
jdk8允许声明静态方法、默认方法
	可以有方法体
	接口中定义的静态方法只能被接口调用,不是使用实现类调用
	默认方法
			public defaule void aa() {
        	}
			可以被实现类继承与重写
			实现类继承后没有重写时调用的是接口的方法,实现类重写后调用的是重写后的方法

	当类实现的两个接口中定义了同名同参数的默认方法,则实现类在没有重写默认方法的情况下实现类对象调用会报错;实现类必须重写接口中定义的默认方法
	类继承了父类并实现了接口,父类与接口中定义了同名同参数的默认方法;默认情况在,类在没有重写此方法时,类的对象调用的是父类中的方法(类优先原则)
	当类实现的两个接口中定义了同名同参数的默认方法,实现类中调用指定接口中的方法
			接口.super.方法名()
jdk9允许声明私有方法
	只允许在接口内部使用

定义

interface Flyable {
    public static final int MIN = 0;
    public abstract void fly();
}

public class Bullet implements Flyable {
       @Override
       fly(){
       }
}

多态

接口 变量名 = new 实现类对象()

和抽象类对比

共性

都可以声明抽象方法
都不能实例化

不同

抽象类一定有构造器、接口没有构造器
类与类之间是继承关系,类与接口是实现关系,接口与接口之间是多继承关系


{/if}