大学里的学生(Student)需要交学费,而研究生(Graduate)作为学生比较特殊,除了需要交学费外,还可以获取一部分科研津贴,由学校(University)统一发放。此外,学校还需要发放教师(Teacher)的工资。

编写代码模拟上述场景:

  • 设计抽象类Student
  • 属性包括姓名(name)、学费(fee);
  • 方法包括:

构造方法StudentString name

抽象方法void setFeeint fee

抽象方法int getFee()

2) 定义一个接口Salary:包含一个方法int getSalary();

3) 定义一个研究生类Graduate,继承Student类且实现Salary接口:

  • 新增属性:收入(salary
  • 方法包括:

构造方法GraduateString name

重写void setFeeint fee

重写int getFee()

重写int getSalary(),研究生获得工资1500

新增方法boolean isLoan(),判断是否需要贷款(若收入小于学费则需贷款)

4) 定义一个教师类(Teacher):

  • 属性包括:姓名(name)、收入(salary
  • 方法包括:

构造方法TeacherString name

重写int getSalary(),教师获得工资3000

5) 定义一个大学类(University),通过void payOffSalary s)方法给研究生和教师发放并打印工资。

6)定义主类Test,主函数中至少包括以下代码:


[java] view plain copy
  1. public abstract class Student {  
  2.         String name;  
  3.         int fee;  
  4.           
  5.         Student(String name){  
  6.             this.name = name;  
  7.             this.fee = 0;  
  8.         }  
  9.         public abstract void setFee(int fee);  
  10.         public abstract int getFee();  
  11.     }  
  12. public class Graduate extends Student implements Salary{  
  13.         int salary;  
  14.         Graduate(String name){  
  15.             super(name);  
  16.             this.salary = 0;  
  17.         }  
  18.         public void setFee(int fee){  
  19.             this.fee = fee;  
  20.         }  
  21.         public int getFee(){  
  22.             return fee;  
  23.         }  
  24.         public int getSalary(){  
  25.             this.salary = 1500;  
  26.             return salary;  
  27.         }  
  28.         boolean isLoan(){  
  29.             if(salary - fee >= 0)  
  30.                 return false;  
  31.             else  
  32.                 return true;  
  33.         }  
  34. }  
  35. public class Teacher implements Salary{  
  36.     String name;  
  37.     int salary;  
  38.     Teacher(String name){  
  39.         this.name = name;  
  40.         salary = 0;  
  41.     }  
  42.     public int getSalary(){  
  43.         this.salary = 3000;  
  44.         return salary;  
  45.     }  
  46.   
  47. }  
  48. public class Univeusity {  
  49.     public void payOff(Salary s){  
  50.         System.out.println("工资为:"+s.getSalary());  
  51.     }  
  52. }  
  53. public interface Salary {  
  54.     int getSalary();  
  55. }  
  56. public class Test {  
  57.   
  58.     public static void main(String[] args) {  
  59.         // TODO Auto-generated method stub  
  60.         Graduate g = new Graduate("小亮");  
  61.         g.setFee(1000);  
  62.         Univeusity u = new Univeusity();  
  63.         u.payOff(g);  
  64.         System.out.println("是否需要贷款:"+g.isLoan());  
  65.           
  66.         Teacher t = new Teacher("大王");  
  67.         u.payOff(t);  
  68.     }  
  69. }  抽象类-学生-研究生-收入-教师

相关文章: