首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

Java 介面多實現範例:Sing 與 Print 介面、Student 單實現、Teacher 多實現與向上轉型

     編輯:Java 綜合教學

Java 介面多實現範例

介面解決 Java 單繼承限制,一個類別可實作多個介面。本範例展示兩個介面 Sing、Print,以及 Student (單實作) 與 Teacher (多實作) 的設計。

1. 介面定義

public interface Sing {
    String EYE_COLOR = "black"; // public static final
    void sleep();
    void sing();
}

public interface Print {
    String SEX = "woman";
    void print();
    void eat();
}

2. 實作類別

public class Student implements Sing {
    private String name;
    public Student(String name) { this.name = name; }
    public String getName() { return name; }
    @Override public void sleep() { System.out.println("Student is sleeping"); }
    @Override public void sing() { System.out.println("Student is singsong"); }
    public void all() { System.out.println("這位名叫 " + name + " 的 Student 是一位喜歡唱歌的人"); }
}

public class Teacher implements Sing, Print {
    private int age;
    public Teacher(int age) { this.age = age; }
    public int getAge() { return age; }
    @Override public void print() { System.out.println("Teacher is print"); }
    @Override public void eat() { System.out.println("Teacher is eating"); }
    @Override public void sleep() { System.out.println("Teacher is sleeping"); }
    @Override public void sing() { System.out.println("Teacher is singsong"); }
    public void info() { System.out.println("這位 " + age + " 歲的教師既會唱歌又會畫畫"); }
}

3. 測試與向上轉型

public class Test {
    public static void main(String[] args) {
        Student s1 = new Student("LiQing");
        s1.sleep(); s1.sing(); s1.all();

        Sing t1 = new Teacher(25);      // 向上轉型為 Sing
        t1.sing(); t1.sleep();

        Print p1 = (Print) t1;          // 強制轉型為 Print
        p1.print(); p1.eat();

        Teacher t2 = (Teacher) t1;      // 還原具體類別
        t2.info();
    }
}

輸出結果

Student is sleeping
Student is singsong
這位名叫 LiQing 的 Student 是一位喜歡唱歌的人
Teacher is singsong
Teacher is sleeping
Teacher is print
Teacher is eating
這位 25 歲的教師既會唱歌又會畫畫

關鍵概念

  • 介面中變數隱含 public static final,方法隱含 public abstract。
  • 實作類別必須實作介面所有抽象方法。
  • 介面引用可指向實作類別物件(向上轉型),僅能調用介面宣告的方法;需調用子類特有方法時需向下轉型。
  • 一個類別可實作多個介面,間接實現多重繼承效果。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved