/*
接口是多个类的公共规范
是一种引用数据类型
Java 9中可以在接口包含的内容:
1.常量
2.抽象方法
3.默认方法
4.静态方法
5.私有方法
public abstract为接口的固定修饰符 可以选择性省略
方法中的三要素可以随意定义
1.接口类不能直接使用,必须又一个"实现类"来实现该接口
2.接口的实现类,必须覆盖接口中所有的抽象方法
3.创建实现类的对象
从Java8开始接口中可以有默认方法
public default 返回值类型 方法名称(){};
可以解决接口升级的问题
默认方法可被实现类重写
从Java8开始接口中可以有静态方法
public static 方法名(){方法体};
不能通过接口实现类来调用接口中的静态方法
通过接口名调用接口静态方法
接口私有方法:
抽取一个方法,解决两个接口方法之间的重复代码问题
1.普通私有方法:解决默认方法的重复
2.静态私有方法:解决静态方法的重复
接口常量:
public static final int num = 10; final:不可改变
故:接口常量一旦赋值,不可改变
使用接口名直接调用
常量名称完全大写,使用下划线分隔
*/
package learning.day5.Interface;
public interface MyInterfaceAbs {
public static final int NUM_123 = 10;//接口常量
public abstract void methodAbs();//接口中的抽象方法
public default void methodDefault() {
System.out.println( "这是新添加的默认方法!" );
}
public static void methodStatic() {
System.out.println( "这是接口的静态方法!" );
}
private void methodDefaultCommon() {
System.out.println( "这是一个普通的私有方法" );
}
private static void methodStaticCommon() {
System.out.println( "这是一个静态的私有方法!" );
}
}
package learning.day5.Interface;
public class MyInterface implements MyInterfaceAbs {
@Override
public void methodAbs() {
System.out.println( "这是绝对值方法!" );
}//实现接口总的抽象方法
@Override
public void methodDefault() {
System.out.println( "这是重写后的静态方法!" );
}//重写接口中的静态方法
}
package learning.day5.Interface;
public class MyInterfaceMain {
public static void main(String[] args) {
MyInterface inter = new MyInterface();//用接口实现类new对象
inter.methodAbs();//调用接口实现类实现的原接口中抽象的方法
inter.methodDefault();//调用接口的默认方法
MyInterfaceAbs.methodStatic();//调用接口的静态方法
int num = MyInterfaceAbs.NUM_123;//调用接口常量
System.out.println( num );
}
}