前言
接口用来规范对象的行为,Java不支持多重继承(除了Object类外,其它的类只有一个父类)。但Java支持多接口。
一、接口特点?
1.接口中定义的域(变量)必须是常量(被隐士指定为public static final ),方法被隐士指定为public abstract(jdk1.7);
2.接口支持多继承,即一个接口可以extends多个接口,间接的解决了Java中类的单继承问题;
3.一个类可以实现多个接口;
二、接口
1.代码:
interface Inter {
public abstract void abstractMethod();//抽象方法不能是私有的
public default void defaultMethod() {
System.out.println("普通方法被调用");
privateMethod(); //可以调用接口中的私有方法
privateStaticMethod();//可以调用接口中的私有静态方法
}
public static void staticMethod() {//接口静态方法
System.out.println("静态方法被调用");
privateStaticMethod();//public静态方法可以调用private静态方法
}
private void privateMethod() {
System.out.println("private私有方法被调用");
}
private static void privateStaticMethod() {
System.out.println("private私有静态方法被调用");
}
}
public class A implements Inter{
@Override
public void abstractMethod(){}
public static void main(String[] args) {
new A().defaultMethod();//子类对象调用接口普通方法
Inter.staticMethod();//接口静态方法只能通过接口调用(接口名.静态方法名)。
}
}
总结
在jdk1.8中加入了可以定义普通方法:用关键字default关键字修饰。子类对象可以直接调用。
jdk1.9是允许接口中出现private修饰的默认方法和静态方法
在接口中使用私有方法有四个规则:
- 接口中private方法不能是abstract抽象方法。因为abstract抽象方法是公开的用于给接口实现类实现的方法,所以不能是private。
- 接口中私有方法只能在接口内部的方法里面被调用。
- 接口中私有静态方法可以在其他静态和非静态接口方法中使用。
- 接口中私有非静态方法不能在私有静态方法内部使用。