2016/08/20継承練習問題(2)
5137 ワード
タイトルの説明:白黒とカラーの2種類のプリンタがあって、プリンタの名前を入力して、相応の結び目を印刷します.
手順:親Printerを定義し、プリンタ名とメソッドprintを定義します.
サブクラスの白黒プリンタとカラープリンタの定義
工場クラスを定義します.
テストクラスを定義し、テスト結果:
手順:親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(" ");
}
}
}
}