这里写一个子类调用父类的例子加深子类和父类的关系
这是类的关系
这是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("你成功打印出了一张黑白照片");
}
}
}
接下来是效果的演示