【案例4-5】研究生薪资管理系统
【案例介绍】
- 案例描述
在学校中,学生每个月需要交相应的生活费,老师每个月有相应的工资,而在职研究生既是老师又是学生,所以在职研究生既需要交学费又会有工资。下面要求编写一个程序来统计在职研究生的收入与学费,如果收入减去学费不足2000 元,则输出“provide a loan”(需要贷款)信息,。
本案例要求使用接口实现该程序。
- 运行结果
【案例分析】
(1)定义两个接口,在StudentManageInterface接口中声明两个方法:getFree()和setFree(),用于设置和获取学生的学费;在TeacherManageInterface类中声明两个方法:gePay()和setPaye(),用于设置和获取教师的工资。
(2)定义主类 Graduate,分别实现StudentManageInterface和TeacherManageInterface接口。
(3)定义Graduate类的成员变量,和构造方法。
(4)给出四个接口方法的实现。
(5)给出一个计算是否需要贷款的方法,在里面统计年收入和学费,并输出是否需要贷款的信息。
(6)在main() 方法中创建一个姓名为“zhangsan”的研究生,调用计算是否需要贷款的方法。
【案例实现】
Graduate.java
- class Graduate implements StudentManageInterface,
- TeacherManageInterface {
- private String name, sex;
- private int age;
- private double fee, pay;
- Graduate() {
- }
- Graduate(String name, String sex, int age, double fee, double pay) {
- this.name = name;
- this.sex = sex;
- this.age = age;
- this.fee = fee;
- this.pay = pay;
- }
- public String getName() {
- return name;
- }
- public String getSex() {
- return sex;
- }
- public int getAge() {
- return age;
- }
- public void setFree(double fee) {
- this.fee = fee;
- }
- public double getFree() {
- return fee;
- }
- public void setPay(double pay) {
- this.pay = pay;
- }
- public double getPay() {//对接口的抽象方法必须重写
- return pay;
- }
- }
上述代码中,Graduate类实现了StudentManagerInterface和TeacherManagerInterface接口,并重写了两个接口中的方法。在main()方法中,计算了名为“zhangsan”的研究生是否需要贷款。
StudentManagerInterface.java
- interface StudentManageInterface{ //interface 接口名
- public abstract void setFree(double fee); //抽象方法
- public abstract double getFree();
- }
上述代码中,创建了一个StudentManagerInterface接口,定义了setFree()和get Free ()方法,用于设置和获取学生学费。
TeacherManagerInterface.java
- interface TeacherManageInterface{
- public abstract double getPay();
- public abstract void setPay(double pay);
- }
上述代码中,创建了一个TeacherManagerInterface接口,定义了setPay()和getPay()方法,用于设置和获取教师工资。
TestDemo.java
- public class TestDemo {
- public static void main(String[] args) {
- Graduate gr = new Graduate("zhangsan", "男", 5, 8000, 3000);
- judgeLoan(gr);
- }
- public static void judgeLoan(Graduate gr) {//对象作形参
- if (gr.getPay() * 12 - gr.getFree() * 2 < 2000) {
- System.out.println("provide a loan");
- } else
- System.out.println("don't need a loan");
- }
- }