实验步骤:
1)设计一个程序需要用到的类和接口,分析类和接口之间的关系。
2)创建一个抽象类Worker,有非抽象方法aimAll()
3)创建一个接口Info,有四个抽象方法
4)创建三个子类Teacher,Doctor,Police继承接口和抽象类,实现接口类中的四个方法
5)创建主类Test1,在主类中定义三个参数为接口类型的方法,通过实现接口的类的对象回调重写的接口方法,实现相应功能。
6)运行程序,检验输出结果的正确性。
设计思路:
创建一个一个抽象类Worker,有非抽象方法aimAll(),创建一个接口Info,有四个抽象方法,创建三个子类Teacher,Doctor,Police继承接口和抽象类,分别都实现接口类中的四个方法job(),position(),serviceObject(),aim(),创建主类Test1,在主类中定义三个参数为接口类型的方法,通过实现接口的类的对象回调重写的接口方法,实现相应功能,同时加入了屏幕输入,根据屏幕输入的结果判断执行三个子类中哪一个的方法调用。
package shiyanbaogao_three;
public abstract class Worker {//定义一个抽象类
public void aimAll() {//抽象类的aimAll方法
System.out.println("共同宗旨:为人民服务");
}
}
package shiyanbaogao_three;
public interface Info {//定义接口Info
public abstract void job();//接口中的四个抽象方法
public abstract void aim();
public abstract void position();
public abstract void serviceObject();
}
package shiyanbaogao_three;
public class Docter extends Worker implements Info {//继承抽象类和接口
public void job() {//实现四个接口中的抽象方法
System.out.println("工作:医生");
}
public void position() {
System.out.println("办公地点:医院");
}
public void serviceObject() {
System.out.println("服务对象:病患");
}
public void aim() {
System.out.println("宗旨:救死扶伤");
}
}
package shiyanbaogao_three;
public class Police extends Worker implements Info {//继承抽象类和接口
public void job() {//实现四个接口中的抽象方法
System.out.println("工作:警察");
}
public void position() {
System.out.println("办公地点:警察局");
}
public void serviceObject() {
System.out.println("服务对象:人民群众");
}
public void aim() {
System.out.println("宗旨:惩恶扬善");
}
}
package shiyanbaogao_three;
public class Teacher extends Worker implements Info {//继承抽象类和接口
public void job() {//实现四个接口中的抽象方法
System.out.println("工作:教师");
}
public void position() {
System.out.println("办公地点:学校");
}
public void serviceObject() {
System.out.println("服务对象:学生");
}
public void aim() {
System.out.println("宗旨:教书育人");
}
}
package shiyanbaogao_three;
import java.util.Scanner;
public class Test1 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner scanner=new Scanner(System.in);
System.out.println("请输入你想了解的职业(警察/医生/教师)");
String answer=scanner.nextLine();//屏幕输入获取职业名称
if(answer.equals("警察")) {//这里是判断输入的结果是否是警察
Info police=new Police();//声明父接口变量police,指向子类对象
Worker police2=new Police();//声明父类变量police2,指向子类对象
police.job();//接口回调
police2.aimAll();//调用父类方法
police.aim();//接口回调
police.position();//接口回调
police.serviceObject();//接口回调
}
else if(answer.equals("教师")) {//这里是判断输入的结果是否是教师
Info teacher=new Teacher();//声明父接口变量teacher,指向子类对象
Worker teacher2=new Teacher();//声明父类变量teacher2,指向子类对象
teacher.job();//接口回调
teacher2.aimAll();//调用父类方法
teacher.aim();//接口回调
teacher.position();//接口回调
teacher.serviceObject();//接口回调
}
else {
Info docter=new Docter();//声明父接口变量doctor,指向子类对象
Worker docter2=new Docter();//声明父类变量doctor2,指向子类对象
docter.job();//接口回调
docter2.aimAll();//调用父类方法
docter.aim();//接口回调
docter.position();//接口回调
docter.serviceObject();//接口回调
}
}
}
结果: