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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM