2016/08/20継承練習問題(2)

5137 ワード

タイトルの説明:白黒とカラーの2種類のプリンタがあって、プリンタの名前を入力して、相応の結び目を印刷します.
手順:親Printerを定義し、プリンタ名とメソッドprintを定義します.
package com.jer.ch09.printer;

public class Printer {

    protected String name;

    public Printer(String name) {
        super();
        this.name = name;
    }

    public void print() {
        // TODO Auto-generated method stub
        System.out.println("     "+name+"    ");
    }
}

サブクラスの白黒プリンタとカラープリンタの定義
package com.jer.ch09.printer;

public class BlackPrinter extends Printer {

    public BlackPrinter() {
        super(PrinterFactory.BLACK);
    }

    public void print() {
        super.print();
        System.out.println("       ");
    }
}
package com.jer.ch09.printer;

public class ColorPrinter extends Printer {

    public ColorPrinter() {
        super(PrinterFactory.COLOUR);
        // TODO Auto-generated constructor stub
    }

    public void print() {
        super.print();
        System.out.println("       ");
    }
}

工場クラスを定義します.
package com.jer.ch09.printer;

public class PrinterFactory {

    public static final String BLACK = "  ";
    public static final String COLOUR = "  ";

    public static Printer getPrinter(String name) {
        switch (name) {
        case BLACK:
            return new BlackPrinter();
        case COLOUR:
            return new ColorPrinter();
        default:
            return null;
        }
    }
}

テストクラスを定義し、テスト結果:
package com.jer.ch09.printer;

import java.util.Scanner;

public class Test {

    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        Printer printer = null;
        while (true) {
            System.out.print("        :");
            printer = PrinterFactory.getPrinter(input.next());
            if (printer!=null) {
                printer.print();
                input.close();
                return;
            }else {
                System.out.println("           ");
            }
        }
    }
}