---恢復內容開始---
有一台HP打印機需要一個程序來實現開機,打印,關機這三個功能
class HPprinter { void open(){ System.out.println("Open"); } void print(String s){ System.out.println("print-->" + s); } void close(){ System.out.println("Close"); } }
class Test { public static void main(String args[]) { HPprinter hp = new HPprinter(); hp.open(); hp.print("abc"); hp.close(); } }
後來又來一台Canon打印機需要實現開機,打印,清理,關機
class Canonprinter
{
void open(){
System.out.println("Open");
}
void print(String s){
System.out.println("print-->" + s);
}
void close(){
this.clean();
System.out.println("Close");
}
void clean(){
System.out.println("Clean");
}
}
如何用同一個程序實現這兩台打印機的功能呢?
class Test
{
public static void main(String args[])
{
int a = 0;
HPprinter hp = new HPprinter();
Canonprinter canon = new Canonprinter();
if(a == 1){ //注意此處需要用等於號。
hp.open();
hp.print("abc");
hp.close();
}
else if(a == 0){
canon.open();
canon.print("123");
canon.close();
}
}
}
上述程序有很多的重復代碼,要是有很多種不同的打印機加進來,改一個程序容易,改兩個程序也容易,總不能每個程序改一遍的吧?其實我們完全可以把風險降到最低,解決掉這些重復代碼。
建一個父類Printer
class Printer
{
void open(){
System.out.println("Open");
}
void print(String s){
System.out.println("Print-->" + s);
}
void close(){
System.out.println("Close");
}
}
讓各類打印機繼承
class HPprinter extends Printer
{
}
class Canonprinter extends Printer
{
void close(){
this.clean();
super.close();
}
void clean(){
System.out.println("Clean");
}
}
主函數
class Test
{
public static void main(String args[])
{
int a = 0;
HPprinter hp = new HPprinter();
Canonprinter canon = new Canonprinter();
if(a == 1){
hp.open();
hp.print("abc");
hp.close();
}
else if(a == 0){
canon.open();
canon.print("123");
canon.close();
}
}
}
至此完成
---恢復內容結束---