//假設要做一個猜數字的遊戲,但是不確定會用甚麼方式呈現,於是先做抽象類別架好框架,剩下的等確定好呈現方式後再完成
//後來決定用文字方式呈現
//這是一開始就做文字版的方式
package tw.xxx.myfirstproject.game;
import java.util.Scanner;
public class GamePolymorphismDetial {
public static void main(String[] args) {
Scanner console = new Scanner(System.in);//Scanner(輸入file的方式)
int num = (int)Math.random()*3;//隨機變數0-2
int guess; //guess是等一下用來放console的變數
do{
System.out.println("輸入數字:");
guess = console.nextInt();
}while(guess!=num);
System.out.println("中!");
}
}
下面是拆成抽象類別與子類別的做法
//假設要做一個猜數字的遊戲,但是不確定會用甚麼方式呈現,於是先做抽象類別架好框架,剩下的等確定好呈現方式後再完成
//後來決定用文字方式呈現
//這是一開始就做文字版的方式
package tw.xxx.myfirstproject.game;
import java.util.Scanner;
abstract class GuessGame{
abstract void print(String text);//不知道要怎麼輸出,所以先抽象,讓子類別實現
abstract int nextInt();//同上
public void println(String text){
print(text+"\n");
}
public void go(){
int num = (int)(Math.random()*3);//隨機變數0-2,不論哪種介面都需要
int guess; //猜測的數字也都需要
do{
print("輸入數字:");//使用未實作的方法
guess = nextInt();//同上
}while(guess!=num);
println("中!");
}
}
class Test extends GuessGame{
private Scanner console = new Scanner(System.in);//假設最後還是決定用文字來玩遊戲,則需要有輸入指令
@Override
void print(String text) {//實作
System.out.print(text);
}
@Override
int nextInt() {//實作
return console.nextInt();
}
}
public class GamePolymorphismDetial{
public static void main(String[] args) {
//試玩
Test t = new Test();
t.go();
}
}
輸入數字:0
輸入數字:3
輸入數字:2
中!
留言列表