一、
java7
1、常量
2、抽象方法
java8
默认方法
静态方法
java9
私有方法
接口中是可以定义成员变量的,但是必须用 public static final 关键字修饰,从效果来看就相当是一个常量。
接口中的常量用public static final 来修饰,是可以省略这三个关键字相当常量,因此只能初始化的进行赋值,后面不能更改,命名格式建议大写字母加下划线
public class Demo01Interface {
int num=5;
public void method() {
}
}
package demo01;
public interface MyInterfaceConst {
public static final int NUM-OF-CLASS=5;
}
二、
1.接口中是没有静态代码块和构造方法的
2.一个类的直接父类只有一个, 但是一个类可以实现多个接口
3.如果实现类所实现的多个接口中,存在重复的抽象方法,那么只需要覆盖重写一次即可
4.如果实现类没有覆盖重写所有接口当中的所有抽象方法,那么实现类必须是一个抽象类
5.如果实现类所实现的多个接口中,存在重复的默认方法产生了冲突,优先使用父类中的方法
6.一个类如果直接父类当中的方法和接口当中的默认方法产生了冲突,优先使用父类当中的方法
三、
1.类和类之间是单继承,直接父类只有一个
2.类和接口之间是多实现,一个类可以实现多个接口
3.接口和接口之间是多继承的
注意事项:
多个父接口中的抽象方法可以重复
多个父接口当中的默认方法可以重复
package demo02;
public class Demo02Interface {
public static void main(String[] agrs) {
Zi zi = new Zi();
zi.method();
}
package demo02;
public interface MyInterface {
public default void method() {
System.out.println(“我是接口里面的默认方法”);
}
package demo02;
public interface MyInterfaceA {
/* 错误写法:接口中不能有静态代码块*/
static {
}
/* 错误写法:接口中不能有构造方法*/
public MyInterfaceA() {
}
public abstract void methodA();
public abstract void methodAbs();
public default void methodDefault() {
System.out.println(“默认方法AAA”);
}
package demo02;
public interface MyInterfaceB {
public abstract void methodB();
public abstract void methodAbs();
public default void methodDefault() {
System.out.println(“默认方法BBB”);
}
package demo02;
public class MyInterfaceImpl implements MyInterfaceA,MyInterfaceB {
@Override
public void methodA() {
// TODO 自动生成的方法存根
}
@Override
public void methodB() {
// TODO 自动生成的方法存根
}
@Override
public void methodAbs() {
// TODO 自动生成的方法存根
}
@Override
public void methodDefault() {
// TODO 自动生成的方法存根
MyInterfaceA.super.methodDefault();
}
package demo02;
public abstract class MyInterfaceAbs implements MyInterfaceA,MyInterfaceB {
@Override
public void methodB() {
// TODO 自动生成的方法存根
}
@Override
public void methodAbs() {
// TODO 自动生成的方法存根
}
@Override
public void methodDefault() {
// TODO 自动生成的方法存根
MyInterfaceA.super.methodDefault();
}
package demo02;
//在此之前,先定义一个接口MyInterface
public class Fu {
public void method() {
System.out.println(“我是父类方法!!”);
}
}
package demo02;
public class Zi extends Fu implements MyInterface{
}