谈谈接口 0.0

目录

接口的概念

接口语法

接口的成员变量与方法

接口的使用

实现多个接口


接口的概念

在现实生活中,接口的例子比比皆是,比如:笔记本上的USB口,电源插座等...

电脑的USB口上,可以插:U盘、鼠标、键盘...所有符合USB协议的设备。

电源插座插孔上,可以插:电脑、电视机、电饭煲...

扫描二维码关注公众号,回复: 16213840 查看本文章

接口就是公共的行为规范标准,大家在实现时,只要符合规范标准,就可以通用!

那么在java中怎么定义接口呢?

在Java中,接口可以看成是:多个类的公共规范,是一种引用数据类型。


接口语法

通过interface定义一个接口

interface IShape {
    
}

接口的成员变量与方法

那么接口中的成员有哪些呢?

interface IShape {
    int a = 10;
    void draw();
    
}

细心的小伙伴会发现-这个draw方法没有用abstract修饰为何能这样写呢?

这是因为你这样的话编译器会默认加上下面的东西:

interface IShape {
    public static final int a = 10;
    
    public abstract void draw();

}

在编译器中我们也可以注意到这些是灰色的:

 因此我们可以总结:

接口中的成员变量默认是 public static final修饰的

接口中的成员方法默认是 public abstract修饰的

接口当中不能有普通的方法(java8开始可以有default和static方法,可以有具体的实现)

interface IShape {
    public static final int a = 10;

    public abstract void draw();

    public static void test1() {

    }
    default void test2() {

    }
}

接口的使用

接口类型是一种引用类型,可以认为比抽象类还抽象,因此是不能new一个对象的。但是可以用关键词 implements 来实现接口。(要重写接口当中所有的抽象方法)

如下:

 那么怎么调用呢?

接口通过向上转型和动态绑定


实现多个接口

在Java中,类和类之间是单继承的,一个类只能有一个父类,即Java中不支持多继承,但是一个类可以实现多个接口

下面我们举个多接口例子:

我们先定义两个接口(跑,游泳),和一个抽象类(Animal)和一个Dog类

下面代码可以理解为:Dog是一个动物具有游泳的特性

//接口1
public interface IRunning {

    void running();

}



//接口2
public interface ISwimming {

    void flying();
}



//Animal类
public abstract class Animal {
    public String name;
    public int age;

    public Animal(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public abstract void eat();
}


//狗类继承Animal类实现ISwimming,IRunning接口
//可以理解为Dog是一个动物具有游泳和跑的功能
public class Dog extends Animal implements ISwimming,IRunning{

    public Dog(String name, int age) {
        super(name, age);
    }

    @Override
    public void eat() {
       
        System.out.println("吃狗粮");

    }

    @Override
    public void swimming() {
        System.out.println("游泳");

    }


    @Override
    public void running() {
        System.out.println("跑");

    }
}

下面演示怎么调用,写一个Test类调用。

public class Test {

    public static void test1(Animal animal) {
        animal.eat();
    }

    public static void test2(IRunning iRunning) {
        iRunning.running();
    }

    public static void test3(ISwimming iSwimming) {
        iSwimming.swimming();
    }

    public static void main(String[] args) {
        Dog dog = new Dog("汪汪队队长",10);

        test1(dog);

        test2(dog);

        test3(dog);
    }


}

 

猜你喜欢

转载自blog.csdn.net/llt2997632602/article/details/130559526
0.0