9.1 實驗目的
介面回呼是多型的另一種體現,介面回呼是指可以把使用某一介面的類創建的物件的參考賦值給該介面宣告的介面變數中,那么該介面變數就可以呼叫被類實作的介面中的方法,當介面變數呼叫被類實作的介面中的方法時,就是通知相應的物件呼叫介面的方法,這一程序成為物件功能的介面回呼,所謂面向介面編程,是指當設計某種重要的類時,不讓該類面向具體的類,而是面向介面,即設計類中的重要資料是介面宣告的變數,而不是具體類宣告的物件,本實驗的目的是掌握介面回呼和面向介面編程思想,
9.2 實驗要求
小狗在不同環境條件下可能呈現不同的狀態,小狗通過呼叫 cry()方法體現自己的當前的狀
態,要求用介面封裝小狗的狀態,具體要求如下,
? 撰寫一個介面 DogState,該介面有一個名字為 void showState()的方法,
? 撰寫 Dog 類,該類中有一個 DogState 介面宣告的變數 state,另外,該類有一個 cry()方法,在該方法中讓介面 state 回呼 showState()方法,即 Dog 物件通過 cry()方法來體現自己目前的狀態,
? 撰寫若干個實作 DogState 介面的類,負責刻畫小狗的各種狀態,
? 撰寫主類,在主類中用 Dog 創建小狗,并讓小狗呼叫 cry 方法體現自己的狀態,
9.3 實驗指導
介面 DogState 規定了狀態的方法名稱,因此,實作該介面的類,必須具體實作介面中的方法 public void showState(),
9.4 實驗實作代碼
interface DogState{
void showState();
}
class aState implements DogState{
public void showState() {
System.out.println("餓了 餓了");
}
}
class bState implements DogState{
public void showState() {
System.out.println("困了 困了");
}
}
class cState implements DogState{
public void showState() {
System.out.println("抱抱 抱抱");
}
}
class Dog{
DogState state;
public void cry() {
state.showState();
}
public void setState(DogState d) {
state = d;
}
}
public class E {
public static void main(String []args) {
Dog dog = new Dog();
dog.setState(new aState());
dog.cry();
dog.setState(new bState());
dog.cry();
dog.setState(new cState());
dog.cry();
}
}
9.5 實驗結果

轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/160246.html
標籤:其他
