父類別 NPC 共同特徵與方法:下面三行的抽象方法有提醒的功用,其子類別中必須覆寫,不然會出錯。
package NPC;
public abstract class Commn {
public String name, line;
public Commn(String name, String line){
this.name = name;
this.line = line;
}
public abstract void position();
public abstract void say();
public abstract void doing();
}
子類別之行人:
package NPC;
public class Walker extends Commn {
public Walker(String name, String line) {
super(name,line);
this.line = line;
}
public void position(){
System.out.println("【到處亂走!】");
}
public void say(){
System.out.println("台詞:" + line);
}
public void doing(){
System.out.println("== NPC" + name + " 的狀態! ==");
position();
say();
}
}
子類別之商人:
package NPC;
public class Merchant extends Commn{
public Merchant(String name, String line) {
super(name,line);
this.line = line;
}
public void position(){
System.out.println("【停在原地,不移動!】");
}
public void say(){
System.out.println("台詞:" + line);
}
public void doing(){
System.out.println("== NPC" + name + " 的狀態! ==");
position();
say();
}
}
不在 NPC package 中的子類別幽靈:故意測試看看這樣能不能繼承,答案是可以,但要引入。
import NPC.Commn; // 因為此類別不在 NPC 資類夾下,但用到了其中的類別,故需引入。
public class Ghost extends Commn {
public Ghost(String name, String line) {
super(name,line);
this.line = line;
}
public void position(){
System.out.println("【若隱若現的亂飄浮!】");
}
public void say(){
System.out.println("台詞:" + line);
}
public void doing(){
System.out.println("== NPC" + name + " 的狀態! ==");
position();
say();
}
}
主程式:
// 這個程式在試驗 package 的引入。
import NPC.*; // 引入 NPC package 下的所有類別。
public class Main {
public static void main(String[] args){
// 創造各種 NPC,給名字與台詞!
Walker luna = new Walker("露娜", "今晚的月亮(我)很美吧?");
Merchant troy = new Merchant("特洛伊","快來買喔!這些武器都有 CAS 國家認證喔!");
Ghost kate = new Ghost("凱特","我死得好慘啊!");
// 使用各個 NPC 的 doing 方法。
luna.doing();
System.out.println();
troy.doing();
System.out.println();
kate.doing();
System.out.println();
}
}
結果:
== NPC露娜 的狀態! ==
【到處亂走!】
台詞:今晚的月亮(我)很美吧?
== NPC特洛伊 的狀態! ==
【停在原地,不移動!】
台詞:快來買喔!這些武器都有 CAS 國家認證喔!
== NPC凱特 的狀態! ==
【若隱若現的亂飄浮!】
台詞:我死得好慘啊!
Process finished with exit code 0
這可能是最後一個會放上來的 JAVA 練習了,因為書看完了,雖然還有另外買一本,但接下目標是實作了,之後放上來的應該只有成果,不會再有程式碼了。
沒有留言:
張貼留言