在我們所有樂器(Instrument)例子中
之所以要建立這個通用接口
如果有一個象Instrument那樣的抽象類
針對這個問題
abstract void X();
包含了抽象方法的一個類叫作
若一個抽象類是不完整的
如果從一個抽象類繼承
即使不包括任何abstract方法
Instrument類可很輕松地轉換成一個抽象類
下面是我們修改過的
//: Music
// Abstract classes and methods
import java
abstract class Instrument
int i; // storage allocated for each
public abstract void play();
public String what() {
return
}
public abstract void adjust();
}
class Wind
public void play() {
System
}
public String what() { return
public void adjust() {}
}
class Percussion
public void play() {
System
}
public String what() { return
public void adjust() {}
}
class Stringed
public void play() {
System
}
public String what() { return
public void adjust() {}
}
class Brass
public void play() {
System
}
public void adjust() {
System
}
}
class Woodwind
public void play() {
System
}
public String what() { return
}
public class Music
// Doesn
// added to the system still work right:
static void tune(Instrument
//
i
}
static void tuneAll(Instrument
for(int i =
tune(e[i]);
}
public static void main(String[] args) {
Instrument4[] orchestra = new Instrument4[5];
int i = 0;
// Upcasting during addition to the array:
orchestra[i++] = new Wind4();
orchestra[i++] = new Percussion4();
orchestra[i++] = new Stringed4();
orchestra[i++] = new Brass4();
orchestra[i++] = new Woodwind4();
tuneAll(orchestra);
}
} ///:~
可以看出,除基礎類以外,實際並沒有進行什麼改變。TW.winGWit.Com
創建抽象類和方法有時對我們非常有用,因為它們使一個類的抽象變成明顯的事實,可明確告訴用戶和編譯器自己打算如何用它。
From:http://tw.wingwit.com/Article/program/Java/hx/201311/26130.html