Java基礎讀書筆記(六)——接口

接口

Java支持單重繼承機制,不支持多重繼承。單繼承機制使得Java結構簡單,層次清楚,易於管理,但在實際應用中也需要使用多重繼承功能。爲了實現像C++中的多重繼承,Java中引入了接口概念。

- 接口定義

接口是由常量和抽象方法組成的特殊類,刻畫了類與類之間合作的標準。接口定義由interface引導,分爲接口的聲明和接口體。在接口體中只進行方法聲明,不能進行方法的實現。

 [public] interface  接口名 [extend 父接口名列表]{
     [public][static]][final]域類型 域名 = 常量值; //常量域聲明
     [public][abstract][native]返回值 方法名(參數列表)[throw 異常列表]; //抽象方法聲明
 }
注意:

①interface是聲明接口的關鍵字,可以把接口看成一個特殊類。

②用戶public修飾的是公共接口,可被所有的類和接口使用,且該接口中的方法和變量也全部爲public。如果是默認的修飾符的接口,則只能被同一個包中的其他類和接口使用。

③接口具有繼承性,一個接口可以繼承多個父接口,父接口間用逗號分隔。

④系統默認接口中所有屬性的修飾都是public static final.

⑤系統默認接口中所有方法的修飾都是public abstract.

⑥在接口中對抽象方法聲明時,只能給出這些抽象方法的方法名、返回值和參數列表,而不能定義方法體,即這些藉口僅是規定了一組信息的交換、傳輸和處理的“接口”。

public interface Stu_info {
    int year = 2018;//定義在接口中的變量全部隱含爲final和static,因此成員變量year必須設置初值。
    int age();
    void out(); //接口中只有方法聲明,沒有方法實現
}
- 實現接口

接口是抽象類的一種,不能直接用於創建對象。接口的作用在於規定一些功能的框架。一旦一個接口被定義,一個或多個類就可以實現該接口。用關鍵字implement聲明一個類將實現一個接口。

[<修飾符>]class<類名>[extends<超類名>][implements<接口名1>,<接口名2>,...]    //<修飾符>可以是public,也可省略。
注意:

①一個類可以實現多個接口,用逗號分隔接口列表。

②如果實現某接口的類**不是**abstract的抽象類,則在類的定義部分爲所有抽象方法定義方法體,而且方法頭部分應該與接口中的定義完全一致,即有完全相同的返回值和參數列表。

③如果實現某接口的類 abstract的抽象類,則它可以不實現該接口所有的方法。但該類的任一非抽象子類,它的父類所實現的接口中所有抽象方法都必須存在實在的方法體。這些方法體可以來自抽象父類,也可來自子類自身,但不允許存在未被實現的接口方法。這體現了非抽象類中不能存在抽象方法的原則。

④接口的抽象方法的訪問限制符都已指定爲public,一個類在實現該接口時,必須實現接口中所有方法,並且方法必須聲明爲public。

一個類實現一個接口:
public class Student implements Stu_info {
      String name;
      String Sex;
      int birth_year;

    public Student(String name, String sex, int birth_year) {
        this.name = name;
        Sex = sex;
        this.birth_year = birth_year;
    }
    public int age() {
        return year-birth_year;
    }
    public void out() {
        System.out.println(this.name +" " + this.Sex +" " +this.age()+"歲");
    }
    public static void main(String[] args) {
        Student s1 = new Student("Jackson", "男", 2000);
        s1.out();
    }
}

運行結果:
這裏寫圖片描述

多個類實現同一接口:
interface fee {
     public void charge();

}

public class Apple implements fee {
    public void charge() {
        System.out.println(" apple: 10元1斤");
    }
}

public class Banana implements fee {
    public void charge() {
        System.out.println("banana: 15元2斤");
    }
}

public class Fruit {
    public static void main(String[] args) {
        Apple red = new Apple();
        Banana yellow =new Banana();
        red.charge();
        yellow.charge();
    }
}

運行結果:
這裏寫圖片描述

一個類實現多個接口:
interface Shape {
    double PAI = 3.14;
    double getArea();
}

interface showShape {
     void showInfor();
}

public class Circle implements Shape, showShape {
    int r;
    public Circle(int r) {
        this.r = r;
    }
    public double getArea() {
        return r*r*PAI;
    }
    public void showInfor() { 
        System.out.println("r="+ r + "\t the area: " + getArea());
    }
    public static void main(String[] args) {
        Circle c=new Circle(10);
        c.showInfor();
    }

運行結果:
這裏寫圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章