interface

interface

接口, 实际上就是一个 纯的 抽象类,

我们知道 抽象类中, 可以定义 抽象方法(只有方法的 原型设计, 没有方法体实现的 方法)

接口中所有的方法, 都只能是 抽象方法, 不能有 方法体的实现

使用接口, 可以变通一下, 实现多继承

我们知道, 继承一个类的时候, 我们既继承了 它的设计, 也继承了 它的方法体实现

那么实现一个接口, 就只继承了它的设计

Java不支持类的多继承

interface Shape2D {
    final double pi = 3.14; // 数据成员一定要初始化
    public abstract double area(); // 抽象方法
}

final, public abstract关键字, 可以省略

interface Shape2D {
    double pi = 3.14;
    double area();
}

由于 接口 里面只有 方法的原型声明, 没有方法体的实现

所以, 和抽象类一样, 接口也是不能产生实例的, 不能实例化

实现接口

public class 类名称 implements 接口名称 {
    // 在类体中实现接口的方法
    // 本类声明的更多变量 和 方法
}

注意:

1, 必须实现接口中的 所有方法

2, 来自接口的方法 必须声明成 public

class Circle implements Shape2D {
    double radius;
    public Circle(double r) {
        radius = r;
    }
    
    @Override
    public double area() {
        return (pi * radius * radius);
    }
}
class Rectangle implements Shape2D {
    int width, height;
    public Rectangle(int w, int h) {
        width = w;
        height = h;
    }
    
    @Override
    public double area() {
        return (width * height);
    }
}

测试类

public class InterfaceTest {
    public static void main(String[] args) {
        Rectangle rect = new Rectangle(5, 6);
        System.out.println("Area of rect = " + rect.area());
        
        Circle cir = new Circle(2.0);
        System.out.println("Area of cir = " + cir.area());
    }
}

jdk7及以前, 只能定义 全局常量 和 抽象方法

全局常量: public static final 的, 但是书写时, 可以省略不写

抽象方法: public abstract的

jdk8, 除了定义 全局常量 和 抽象方法 之外, 还可以定义 静态方法, 默认方法

参考文献

[1] https://www.bilibili.com/video/BV1Kb411W75N?p=359

[2] https://www.xuetangx.com/learn/THU08091000251/THU08091000251/7753170/video/12654614

[3] https://www.xuetangx.com/learn/THU08091000251/THU08091000251/7753170/video/12654615

参考链接

https://www.bilibili.com/video/BV1Kb411W75N?p=359

posted on 2021-11-04 20:17  beyondx  阅读(929)  评论(0编辑  收藏  举报

导航