這裏寫一個子類調用父類的例子加深子類和父類的關係
這是類的關係
這是demo,用來運行方法和使程序交互性更強
package printer;
/*
測試類
*/
import java.util.Scanner;
public class Printerdemo {
public static void main(String[] args) {
while (true) {
System.out.println("-----------歡迎進入您的虛擬打印機-----------");
System.out.println("請選擇你要打印的照片 ");
System.out.println("1.一寸證件照");
System.out.println("2.兩寸證件照");
System.out.println("3.關閉打印機");
Scanner sc = new Scanner(System.in);
String line = sc.nextLine();
Printer c = new Colorprinter();
// 利用switch語句調用展示方法和進行功能操作的switch語句
switch (line) {
case "1": {
// 展示
System.out.println("請選擇你要打印的顏色");
System.out.println("1.彩色");
System.out.println("2.黑白色");
// 功能的操作
String function = sc.nextLine();
switch (function) {
case "1": {
c.setColor("彩色");
c.print();
break;
}
case "2": {
c.setColor("黑白色");
c.print();
break;
}
default:
System.out.println("對不起您輸入的信息有誤,請重新輸入");
break;
}
break;
}
case "2": {
// 展示
System.out.println("請選擇你要打印的顏色");
System.out.println("1.彩色");
System.out.println("2.黑白色");
// 功能的操作
String function = sc.nextLine();
switch (function) {
case "1": {
c.setColor("彩色");
c.print();
break;
}
case "2": {
c.setColor("黑白色");
c.print();
break;
}
default:
System.out.println("對不起您輸入的信息有誤,請重新輸入");
break;
}
break;
}
case "3": {
// 直接結束系統運行
System.out.println("已關閉打印機");
System.exit(0);
}
default:
System.out.println("您輸入的信息有誤,請重新輸入");
break;
}
}
}
}
這是父類,定義了color的屬性和一個抽象方法抽象類,用來繼承給子類,abstract就是抽象的關鍵詞,用來定義沒有功能的方法,這裏要說一下,抽象類裏邊可以有具體的方法,也可以沒有抽象的方法,但是,具體的類裏邊不能有抽象的方法。
package printer;
/*
定義printer父類
*/
public abstract class Printer {
public String color;
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
public abstract void print();
}
這是子類,繼承了父類裏邊所有的屬性。注意這裏我的color是public的,如果是private的就不能繼承到子類裏了。
package printer;
/*
定義子類重寫print方法
*/
public class Colorprinter extends Printer {
@Override
public void print() {
// TODO Auto-generated method stub
if (getColor() == "彩色") {
System.out.println("你成功打印出了一張彩色照片");
} else if (getColor() == "黑白色") {
System.out.println("你成功打印出了一張黑白照片");
}
}
}
接下來是效果的演示