用 interface 来定义。
接口中的所有成员变量都默认是由public static final修饰的。所以变量需要显示赋值。
接口中的所有方法都默认是由public abstract修饰的。
接口没有构造方法。因为构造方法有方法体{}
**在JDK1.8中,接口中的方法可以有方法体,但需要关键字static或者default来修饰。**静态方法和默认方法都有自己的方法体,用于提供一套默认的实现,这样子类对于该方法就不需要强制来实现,可以选择使用默认的实现,也可以重写自己的实现。static修饰的方法不能重写,并且不能通过对象调用,只能通过接口类类名调用。
在JDK9后,接口中可以有私有静态方法和私有普通方法。
静态方法和默认方法都默认是public的。
public interface Car {
void brand();
String brand = "";
public static void test1(){
System.out.println("接口test1");
}
default void test2(){
System.out.println("接口test2");
}
}
public class BMW implements Car {
@Override
public void brand() {
}
}
public class Benz implements Car{
@Override
public void brand() {
}
@Override
public void test2() {
System.out.println("实现类test2");
}
}
默认方法可以被继承,如果继承了多个接口,多个接口都定义了多个同样的默认方法,实现类需要重写默认方法不然会报错。
public interface NewEnergy {
void brand();
String brand = "b";
public static void test1(){
System.out.println("接口test1");
}
default void test2(){
System.out.println("接口test2");
}
}
public class Tesla implements Car,NewEnergy {
// 两个继承类中都有抽象方法brand和默认方法,所以需要重写
@Override
public void brand() {
}
@Override
public void test2() {
}
}