题目
大学里的学生(Student)需要交学费,而研究生(Graduate)作为学生比较特殊,除了需要交学费外,还可以获取一部分科研津贴,由学校(University)统一发放。此外,学校还需要发放教师(Teacher)的工资。
testMain类
package cn.ganggang;
public class testMain {
public static void main(String[] args) {
Graduate g = new Graduate("小亮");
g.setFee(1000);
University u = new University();
u.payOff(g);
System.out.println("研究生:是否需要贷款:"+g.isLoan()+";学费:"+g.getFee()+";获取科研经费:"+g.getSalary());
Teacher t = new Teacher("大王");
u.payOff(t);
System.out.println("教师:获取工资:"+t.getSalary());
}
}
Student类
package cn.ganggang;
public abstract class Student {
private String name;
public int fee;
Student(String name){
this.name = name;
}
abstract void setFee(int fee);
abstract int getFee();
}
Salary接口
package cn.ganggang; public interface Salary { int getSalary(); }
Graduate类
Teacher类package cn.ganggang; public class Graduate extends Student implements Salary { private int salary; Graduate(String name) { super(name); salary = 1500; } //重写父类抽象方法 @Override void setFee(int fee) { super.fee = fee; } @Override int getFee() { return super.fee; } //重写接口抽象方法 @Override public int getSalary() { // TODO Auto-generated method stub return salary; } boolean isLoan(){ return false; } }
package cn.ganggang; public class Teacher implements Salary { private String name; private int salary; Teacher(String name){ this.name = name; salary = 3000; } public int getSalary() { // 获得工资 return salary; } }
University类
研究生:是否需要贷款:false;学费:1000;获取科研经费:1500package cn.ganggang; public class University { void payOff(Salary s){ s.getSalary(); } }
教师:获取工资:3000