java中類繼承的簡單應用案例

問題描述:

某公司的僱員分爲以下若干類:

1Employee:這是所有員工總的父類,屬性:員工的姓名,員工的生日月份。方法:getSalary(intmonth) 根據參數月份來確定工資,如果該月員工過生日,則公司會額外獎勵100元。

2 SalariedEmployeeEmployee的子類,拿固定工資的員工。屬性:月薪

3HourlyEmployeeEmployee的子類,按小時拿工資的員工,每月工作超出160小時的部分按照1.5倍工資發放。屬性:每小時的工資、每月工作的小時數

4SalesEmployeeEmployee的子類,銷售人員,工資由月銷售額和提成率決定。屬性:月銷售額、提成率

5BasePlusSalesEmployeeSalesEmployee的子類,有固定底薪的銷售人員,工資由底薪加上銷售提成部分。屬性:底薪。

可編寫程序代碼如下實現題目要求功能:

首先是Employee父類

 public class Employee {
 String name;
 int month;
 
 public double getSalary(double salary,int month){
  if(this.month==month){//this關鍵字調用被隱藏的屬性
   return salary+100;
  }else{
   return salary;
  }
 }
}
下面是繼承Employee父類的SalariedEmployee子類

  public class SalariedEmployee extends Employee {//extends表示繼承
 double salary;//定義成員變量,該子類沒有寫成員方法,可以通過繼承父類方法實現計算工資功能
}
下面是繼承Employee父類的HourlyEmployee子類


public class HourlyEmployee extends Employee {
 double time;
 double timesalary;
 public double getSalary(int month){//此處是對父類成員方法的重寫
  if(time>160){
   return super.getSalary(160*timesalary+timesalary*1.5*(timesalary-160), month);//super關鍵字調用被隱藏的父類該成員方法
  }else{
   return super.getSalary(time*timesalary, month);
  }
 }
}

下面是繼承Employee父類的SalesEmployee子類


public class SalesEmployee extends Employee {
  private double monthlysales;//private實現對成員變量的封裝,其他類中不可以直接訪問該變量
 private double rate;
 public double getMonthlysales() {//該方法可以讓外界獲取私有變量的值
  return monthlysales;
 }
 public void setMonthlysales(double monthlysales) {//該方法可以讓外界給私有變量賦值
  this.monthlysales = monthlysales;
 }
 public double getRate() {
  return rate;
 }
 public void setRate(double rate) {
  this.rate = rate;
 }
 public double getSalary(int month){//父類方法的重寫
  return super.getSalary(monthlysales*rate,month);
 }
}

下面是繼承SalesEmployee父類的BasePlusSalesEmployee子類


public class BasePlusSalesEmployee extends SalesEmployee {//該子類繼承了父類SalesEmployee的所有非私有成員變量和成員方法,也繼承了Employee類的所有非私有成員變量和成員方法
 double salary;
 public double getSalary(int month){//對父類SalesEmployee成員方法的重寫
  return super.getSalary(month)+salary;
 }
}

最後對上述進行測試

public class TextEmployee {
 public static void main(String[] args) {
  SalariedEmployee s1=new SalariedEmployee();//用new關鍵字實例化對象
  s1.month=2;
  s1.salary=1000;
  System.out.println(s1.getSalary(s1.salary, 2));
  
  HourlyEmployee s2=new HourlyEmployee();
  s2.month=3;
  s2.time=100;
  s2.timesalary=10;
  System.out.println(s2.getSalary(3));
  
  SalesEmployee s3=new SalesEmployee();
  s3.month=4;
  s3.setMonthlysales(10000);//爲私有變量賦初值,此處不可以像其他對象一樣直接賦初值
  s3.setRate(0.1);
  System.out.println(s3.getSalary(4));
  
  BasePlusSalesEmployee s4=new BasePlusSalesEmployee();
  s4.month=5;
  s4.setMonthlysales(10000);
  s4.setRate(0.1);
  s4.salary=100;
  System.out.println(s4.getSalary(5));
 }
}

程序運行結果
1100.0
1100.0
1100.0
1200.0

發佈了23 篇原創文章 · 獲贊 20 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章