java接口

语法

interface 接口名{
    //属性
    //方法(1.抽象方法 2.默认实现方法 3.静态方法)
}
class 类名 implements 接口{
    自己的属性;
    自己的方法;
    必须实现接口的方法
}

注意:在java7.0之前所有的方法都没有方法体,即都是抽象方法。在java8.0后可以有静态方法,默认方法。接口中的方法体可以被具体实现。JDK 9.0 以后,允许将方法定义为 private,使得某些复用的代码不会把方法暴露出去。

//默认实现方法
default public void ok(){}
//静态方法
public static void ok(){}

细节

1.接口的属性默认修饰符public static final

//你看到的
interface 接口名{
    int a = 10;
}
//实际上public static final
interface 接口名{
    public static final int a = 10;
}

所以接口的属性必须要赋初值,也不能随便修改。
2.接口中的所有方法都是public方法,接口中的抽象方法,可以不用abstract修饰
3.接口不能被实例化。
4.一个类可以实现多个接口

class A implements B,C{
}

5.一个普通类实现接口,必须实现该接口的所有方法。在IDEA中可以使用快捷键alt+enter快速生成
6.抽象类实现接口时,可以不实现接口的抽象方法。

interface b{
   void cat();
}
abstract class a implements b{
}

7.接口中属性的访问形式:接口名.属性名。主要原因还是属性默认的static起了作用

    public static void main(String[] args) {
        System.out.println(b.aa);
    }
    public void tt() {
        System.out.println(b.aa);
    }
interface b{
        int aa =22;
        void cat();
}

8.接口不能继承类,但可以继承多个别的接口

interface b extends a,d,c{
        int aa =22;
        void cat();
}
interface a{
}
interface c{
}
interface d{
}

9.接口的修饰符只能是public 和默认 ,abstract,这点和类的修饰符是一样的。

接口 vs 继承类

1.接口和继承解决的问题不同

继承的价值主要在于:解决代码的复用性和可维护性

接口的价值主要在于:设计好规范,让其他类去实现这些方法

2.接口比继承更加灵活

接口比继承更加灵活,继承满足is-a的关系,而接口只需满足like-a的关系

实现接口是对java单继承机制的一种补充.

接口的多态特性

接口类型的变量可以指向实现接口类的对象实例

    public static void main(String[] args) {
        a a1 = new b();
        a1.cat();
    }
}
interface a{
    void cat();
}
class b implements a{
    @Override
    public void cat() {
        System.out.println("小猫抓鱼");
    }
}

接口多态的传递现象:接口类型的变量可以指向实现了该接口的类的对象实例。如果A继承了B接口,而C类实现了A接口,实际上就相当于C类也实现了B接口。

个人感受

接口就像是现实世界的插口,必须插口型号一样才能使用。接口也是一种规范,上面的人写好接口,下面的人必须按照接口中的规定的命名格式写,并实现接口中的方法。使代码更规范更好管理。

posted @ 2022-05-11 00:30  尤所不同  阅读(60)  评论(0编辑  收藏  举报