201711671119《Java程式設計》第六章總結
第六章 介面與實現
教學內容總結
介面
為了克服Java單繼承的缺點,使用介面,一個類可以實現多個介面
1.介面宣告
2.介面體
包含常量的宣告和抽象方法
常量的訪問許可權public, 是static常量(可省略public final static修飾符)
抽象方法的訪問許可權public(可省略public abstract修飾)
介面中的方法不能被static和final修飾,因為要重寫所有介面的方法
介面中沒有建構函式,方法可以丟擲異常
實現介面
關鍵字implement
若一個類實現了某個介面,則這個類必須重寫該介面的所有方法
介面可通過extends關鍵字來繼承產生新的介面
import java.io.*; 可引入包中的類和介面
介面的UML圖 課本P148
第一層:名字層 第二層:常量層 (常量名字:型別) 第三層:方法層/操作層
(虛線的起始端是類、終點端使用空心三角形)
理解介面
抽象類介面1.可作為行為準則 2.抽象類用於同一類別物件 3.介面跟注重行為的一致性
介面回撥(與第五章的物件的上轉型物件呼叫子類重寫方法區分)
介面屬於引用型變數
介面回撥是指:可以把實現某一介面的類建立的物件的引用賦值給該介面宣告的介面變數,則該介面變數可呼叫被類實現的介面方法
例子:
public interface ShowMessage { void 顯示商標(String s); } public class TV implements ShowMessage{ public void 顯示商標(String s) { System.out.println(s); } } public class PC implements ShowMessage{ public void 顯示商標(String s) { System.out.println(s); } } public class Example6_2 { public static void main(String args[]) { ShowMessage sm;//宣告介面變數 sm=new TV();//介面變數存放物件的引用 sm.顯示商標("電視機");//介面回撥 sm=new PC(); sm.顯示商標("MacBook"); } }
介面與多型
由介面產生的多型是指不同的類在實現同一個介面時能具有不同的實現方式,則介面在回撥介面方法時可能具有多種形態
介面變數做引數 example6_5
若一個方法的引數是介面型別,則可以將任何實現該介面的類的引用傳遞給該介面引數,則該介面引數可回撥類實現的介面方法
例子:
interface SpeakHello{
void speakHello();
}
class Chinese implements SpeakHello{
public void speakHello() {
System.out.println("中國人習慣問候語:你好,吃飯了嗎?");
}
}
class English implements SpeakHello{
public void speakHello() {
System.out.println("英國人習慣問候語:你好,天氣不錯 ");
}
}
class KindHello{
public void lookHello(SpeakHello hello) { //介面型別引數
hello.speakHello();//介面回撥
}
}
public class Example6_5 {
public static void main(String args[]) {
KindHello kindhello=new KindHello();
kindhello.lookHello(new Chinese());
kindhello.lookHello(new English());
}
}
面向介面程式設計
1. 面向介面去設計程式,可以通過在介面中宣告若干個abstract方法,表明這些方法的重要性,方法體的內容細節由實現介面的類去完成。
2. 使用介面進行程式設計的核心思想是使用介面回撥,即介面變數存放實現該介面的類的物件的引用,從而介面變數就可以回撥類實現的介面方法。
學習進度
這一個多月來因為其他事而沒有更博,節奏被我打亂了。從這篇部落格起將以章節為單位來更博。。。