java--发工资

来源:互联网 发布:mysql连接工具 编辑:程序博客网 时间:2024/05/01 14:26

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

Student:

public abstract class Student {public String name;public int fee;public Student(String name){  //带参的构造方法this.name=name;}abstract void setFee(int fee);//两个抽象方法,继承的子类必须实现abstract int getFee();}
Graduate:

public class Graduate extends Student implements Salary{//Graduate继承了Student类private static final boolean TRUE = true;//并且实现Salary接口类private static final boolean FLASE = false;int salary;Graduate(String name){  //带参的构造方法super("小红");  //子类必须先调用父类的构造方法,否则会出错super.name=name;//super(name);}void setFee(int fee){//用于修改研究生学费super.fee=fee;}int getFee(){//得到研究生的学费return fee;}public int getSalary(){ //得到研究生工资return 1500;}boolean isLoan(){   //用于判断研究生是否需要贷款if(getSalary()<getFee())return TRUE;else return FLASE;}}
Teacher:

public class Teacher implements Salary{  //实现接口类String name;int salary;Teacher(String name){ //带参的构造方法this.name=name;}public int getSalary(){  //重写接口中的抽象方法,返回的是教师的工资return 3000;}}
Universit:

public class Universit {void payOff(Salary s){  //大学给研究生和教师发工资的方法/*if(s instanceof Teacher){System.out.println((Teacher)s.name+"应支付工资:"+s.getSalary());}else if(s instanceof Graduate){System.out.println((Graduate)s.name+"应支付工资:"+s.getSalary());}*/System.out.println("应支付工资:"+s.getSalary());}}
Salary:

public interface Salary {  //一个接口int getSalary(); //定义了一个方法,接口中的方法都是抽象方法,需要被重写}
Test:

public class Test {public static void main(String[] args) {Graduate g = new Graduate("小亮");g.setFee(2000);Universit u = new Universit();System.out.print(g.name);u.payOff(g);System.out.println("是否需要贷款:"+g.isLoan());Teacher t = new Teacher("大王");System.out.print(t.name);u.payOff(t);}}
测试结果:








原创粉丝点击