java 工資-介面

nan1010894558發表於2017-10-28

大學裡的學生(Student)需要交學費,而研究生(Graduate)作為學生比較特殊,除了需要交學費外,還可以獲取一部分科研津貼,由學校(University)統一發放。此外,學校還需要發放教師(Teacher)的工資。

編寫程式碼模擬上述場景:

1)      設計抽象類Student:

l       屬性包括姓名(name)、學費(fee);

l       方法包括:

- 構造方法Student(String name)

- 抽象方法void setFee(int fee)

- 抽象方法int getFee()

2) 定義一個介面Salary:包含一個方法int getSalary();

3) 定義一個研究生類Graduate,繼承Student類且實現Salary介面:

l       新增屬性:收入(salary)

l       方法包括:

- 構造方法Graduate(String name)

- 重寫void setFee(int fee)

- 重寫int getFee()

- 重寫int getSalary(),研究生獲得工資1500

- 新增方法boolean isLoan(),判斷是否需要貸款(若收入小於學費則需貸款)

4) 定義一個教師類(Teacher):

l       屬性包括:姓名(name)、收入(salary)

l       方法包括:

- 構造方法Teacher(String name)

- 重寫int getSalary(),教師獲得工資3000

       5) 定義一個大學類(University),通過void payOff(Salary s)方法給研究生和教師發放並列印工資。

       6)定義主類Test

student程式碼:

public abstract class Student {
	public String name;
	public int fee;
	public Student(String name) {
		super();
		this.name=name;
	}
	public abstract void setFee(int fee);
	public abstract int getFee();
	
	
	
}
Graduate類程式碼:

public class Graduate extends Student implements Salary{
	public int salary;
	public Graduate(String name) {
		super(name);
	}
	@Override
	public int getSalary() {
		System.out.println("研究生"+name);
		salary=1500;
		return salary;
	}
	@Override
	public void setFee(int fee) {
		this.fee=fee;
	}
	@Override
	public int getFee() {
		return this.fee;
	}
	public boolean isLoan(){
		if(salary<fee)
			return true;
		return false;
	}
}

Teacher類程式碼:

public class Teacher implements Salary{
	public String name;
	public int salary;
	public Teacher(String name) {
		super();
		this.name=name;
	}
	
	@Override
	public int getSalary() {
		System.out.println("老師"+name);
		salary=3000;
		return salary;
	}

}
University類程式碼:

public class University {
	public void payOff(Salary s){
		System.out.println("工資為"+s.getSalary());
	}
}

Salary介面:

public interface Salary {
	public int getSalary();
}

Test類程式碼:

public class Test {

	public static void main(String[] args) {
		Graduate g=new Graduate("小亮");
		g.setFee(1000);
		
		University u=new University();
		u.payOff(g);
		System.out.println(g.name+"是否需要貸款\t"+g.isLoan());
		
		Teacher t=new Teacher("大王");
		u.payOff(t);
	}

}


執行結果圖:


相關文章