2021年9月2日 星期四

JAVA Package 練習

Package 相關類別的集合,這在程式越來越大時,不同的 Package 即使取了相同的變數或方法的名稱也沒有關係,因為 JAVA 可以由 Package 知道我們究竟是指哪一個變數或方法。接下來的範例是主程式引用了 NPC Package,而 NPC Package 的位置就設在 project 下的 src 資料夾中,即在 src 資料夾中設置一個 NPC 資料夾,而 NPC 資料夾內就是 NPC 的相關類別了。

父類別 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 練習了,因為書看完了,雖然還有另外買一本,但接下目標是實作了,之後放上來的應該只有成果,不會再有程式碼了。


沒有留言:

張貼留言