//假設要做一個猜數字的遊戲,但是不確定會用甚麼方式呈現,於是先做抽象類別架好框架,剩下的等確定好呈現方式後再完成

//後來決定用文字方式呈現

//這是一開始就做文字版的方式


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

!

arrow
arrow
    全站熱搜

    乙方 發表在 痞客邦 留言(0) 人氣()