
接口的静态方法只能用 接口名.方法 调用
接口VS 抽象类 接口中所有的方法都是抽象的,即有方法名,方法参数,返回值,但没有方法体;抽象类中可有具体方法; 接口中的方法的访问限制权限都是public;抽象类中无此限制; 接口中没有成员变量,但可以有常量;抽象类中可有成员变量; 一个类只能继承一个抽象类,但可实现多个接口。
public class Interface {
public static void main(String[] args) {
MySayHi mySayHi = new MySayHi();
mySayHi.sayHi3();
mySayHi.sayHi();
SayHi.sayHi2();
//不可以mySayHi.sayHi2();
System.out.println(mySayHi.x);
//不可以mySayHi.x=1;
}
}
interface SayHi{
intx=1;
//实际上是 public static final int x=1;
default void sayHi(){
System.out.println("hi");
}
//接口中所有方法默认都是public的
static void sayHi2(){
System.out.println("hi");
}
void sayHi3();
}
class MySayHi implements SayHi{
//这里不可以 void sayHi3(){};
//因为接口中的方法默认都是public的,因此注意实现的时候要加publci
public void sayHi3(){
System.out.println("hi3");
}
}


为什么需要接口?


注意到,teacher如果实现IG,由于IG继承IH,因此teacher要实现IH、IG所有的抽象方法才行

访问x的时候有问题,应该是B.x、A.x、super.x