Untitled

接口的静态方法只能用 接口名.方法 调用

接口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");
    }
}

Untitled

Untitled

为什么需要接口?

Untitled

Untitled

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

Untitled

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