java中的接口

接口表示一个类额外功能的实现,其作用是为了降低耦合。
接口的使用注意事项

1. 接口中只能存在抽象方法, jvm默认会在方法前使用public abstract进行修饰, 刚学java推荐加上
        2. 类和接口是实现关系 可以通过关键字implements实现接口

3.当一个具体的类实现一个接口的时候,必须要实现接口的所有抽象方法

interface QiChe{
    public abstract void qiche(); //接口中只能有抽象方法
}

abstract class Animal3{   //编写一个动物父类
    public abstract void eat(); //含有抽象方法
}
class Bear extends Animal3{   //熊类继承Animal3类的时候要重写其抽象类的抽象方法
    @Override
    public void eat(){
        System.out.println("🐻吃🥩");
    }
}

class QicheBear extends Animal3 implements QiChe{  //实现接口的时候也要重写其接口中的抽象方法
    public void eat(){
        System.out.println("熊吃肉");
    }
    public void qiche(){
        System.out.println("熊会骑车");
    }
}
public class InterfaceDemo1 {
    public static void main(String[] args) {
        QicheBear q1 = new QicheBear();
        q1.eat();
        q1.qiche();
    }
}
interface Inter{
    void fun1();
    void fun2();
}

interface Inter2 {
    void fun3();
}

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



class Demo5 implements Inter,Inter2{

    @Override
    public void fun1() {

    }

    @Override
    public void fun2() {

    }

    @Override
    public void fun3() {

    }
}

abstract class Demo4 implements Inter{

}



class Demo1Impl implements Inter{

    @Override
    public void fun1() {

    }

    @Override
    public void fun2() {

    }
}

public class InterfaceDemo2 {
    public static void main(String[] args) {

    }
}

4.若一个抽象类实现一个接口的时候,可以选择性地实现接口中的抽象方法
例如上面代码的

abstract class Demo4 implements Inter{

}

5.一个类可以同时实现多个接口,使用逗号隔开,但是要注意如果这个类不是抽象类,需要重写这里面的所有抽象方法

class Demo5 implements Inter,Inter2{

    @Override
    public void fun1() {

    }

    @Override
    public void fun2() {

    }

    @Override
    public void fun3() {

    }
}

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

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

java中允许多继承吗?
1.如果是类与类之间的继承,只能进行单继承,不能多继承
2.如果是接口与接口之间的继承,可以进多继承,也可以进行单继承

7.接口中只能定义常量,默认修饰符为public static final

interface Inter1{
    public static final int a = 10;

//    Inter1(){}
}

class Demo6 implements Inter1{
    public void fun1(){
//        a = 20;
        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(); // 接口多态
    }
}

接口无法进行实例化,没有构造方法,因为接口和类之间是属于实现关系,接口也不能创建对象,因为其中都没有构造方法
`// Inter1(){}
// Inter1 inter1 = new Inter1();

`

posted @ 2024-09-25 20:37  你的镁偷走了我的锌  阅读(26)  评论(0)    收藏  举报