接口

接口中只能存在抽象方法, jvm默认会在方法前使用public abstract进行修饰, 刚学java推荐加上

interface QiChe{
    public abstract void qiChe();
    //熟练了可以不写public abstract(可省略)
}
`接口:表示一个类的  额外功能  的实现`

类和接口是实现关系 可以通过关键字implements实现接口
点击查看代码
interface QiChe{
    public abstract void qiChe();
    //熟练了可以不写public abstract(可省略)
}


abstract class Animal3{
    public abstract void eat();
}

class Bear extends Animal3{
    @Override
    public void eat(){
        System.out.println("🐻吃🥩");
    }
}

class QiCheBear extends Animal3 implements QiChe{
    @Override
    public void eat() {
        System.out.println("🐻吃🥩");
    }

    @Override
    public void qiChe() {
        System.out.println("训练后的🐻会骑车");
    }
}
当一个具体的类实现一个接口的时候, 必须要实现接口中所有的抽象方法
意思就是要重写一下接口里的所有修饰函数,并且,在接口里所有函数都是抽象函数
点击查看代码
interface Inter{
    void fun1();
    void fun2();
}

class Demo5 implements Inter{

    @Override
    public void fun1() {

    }

    @Override
    public void fun2() {

    }
}

  若一个抽象类实现一个接口的时候,可以选择性地实现接口中的抽象方法
比如说定义一个抽象类

abstract class Demo4 implements Inter{
//可以重写也可以不
}
` 一个类可以同时实现多个接口,使用逗号隔开`

类---接口

点击查看代码

interface Inter{
    void fun1();
    void fun2();
}

interface Inter2 {
    void fun3();
}

class Demo5 implements Inter,Inter2{

    @Override
    public void fun1() {

    }

    @Override
    public void fun2() {

    }

    @Override
    public void fun3() {

    }
}
 接口和接口存在继承关系, 并且一个接口可以同时继承多个接口

实现 接口--接口
点击查看代码
interface Inter{
    void fun1();
    void fun2();
}

interface Inter2 {
    void fun3();
}

interface Inter3 extends Inter,Inter2{
    //fun1();
    //fun2();
    //fun3();
    void fun4();
}

接口中只能定义常量, 默认修饰符为public static final
接口无法实例化, 接口中不能出现构造方法

点击查看代码
interface Inter1{
    public static final int a = 10;//不可更改

//    Inter1(){}
}

class Demo6 implements Inter1{
    public void fun1(){
//        a = 20;可以输出常量a,但是不能改变常量a的值
        System.out.println(a);
    }

}

public class InterfaceDemo3 {
    public static void main(String[] args) {
        Demo6 demo6 = new Demo6();
        System.out.println(demo6.a);
        System.out.println(Inter1.a);
        demo6.fun1();

//        Inter1 inter1 = new Inter1(); //不能实体化

        Inter1 i1 = new Demo6(); // 接口多态
    }
}
posted @ 2024-09-24 21:52  wang_jun  阅读(56)  评论(1)    收藏  举报