java的子类别运用 回答请提供代码

  1. 請根據以下程式實作子類別
public class Employee {
    private int empno; //員工編號
    private String name; //員工姓名 
    private long salary; //薪水 
}
  • 如果我們希望外部其它類別『不能修改empno、name、salary的欄位,僅能在new Employee 時於建構方法中設定員工編號以及員工姓名以及salary,以及建立物件後要可以利用get**取得 empno、name、salary。
  • 設計一個新的Manager(經理)類別,繼承Employee類別,然而經理比一般員工多了long型態的
    bonus(分紅),分紅也『不開放修改』同樣只能由建構方式中指定,請設計一個新的建構方法可
    以同時指定empno、name、salary、bonus的欄位而且要呼叫父類別的建構方法。
  • 經理的薪水為原本的salary加上bonus,請覆寫getSalary方法。

public class Manager extends Employee {

  private long bonus;

  public Manager(int empno, String name, long salary, long bonus) {
    super(empno, name, salary);
    this.bonus = bonus;
  }

  @Override
  public long getSalary() {
    return super.getSalary() + bonus; 
  }

}

package com;

public class Employee {

    private int empno; //員工編號
    private String name; //員工姓名 
    private long salary; //薪水 
    
    public Employee(){}
    public Employee(int empno,String name,long salary){
        this.empno = empno;
        this.name = name;
        this.salary = salary;
    }
    
    public int getEmpno() {
        return empno;
    }
    public void setEmpno(int empno) {
        this.empno = empno;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public long getSalary() {
        return salary;
    }
    public void setSalary(long salary) {
        this.salary = salary;
    }
    
    @Override
    public String toString() {
        return "empno="+ this.empno + ",name=" + this.name + ",salary=" + this.salary;
    }
}

package com;

public class Manager extends Employee{
    
    private long bonus; //(分紅);
    
    public Manager(){};
    
    public Manager(int empno,String name,long salary,long bonus){
        super(empno,name,salary);
        this.bonus = bonus;
    }

    public long getBonus() {
        return bonus;
    }

    public void setBonus(long bonus) {
        this.bonus = bonus;
    }

    public long getSalary(){
        
        return super.getSalary() + this.bonus;
    }
    
    @Override
    public String toString() {
        return super.toString() + ",bonus=" + this.bonus;
    }
    
    public static void main(String[] args) {
        Manager manager=  new Manager(1001,"张三",5000,1000);
        System.out.println(manager);
        System.out.println("salary=" + manager.getSalary());
    }
}

直接按照题目要求来写代码即可。

测试代码如下:

Employee.java


package employee;

public class Employee {
    
    private int empno; //員工編號
    private String name; //員工姓名 
    private long salary; //薪水 
    
    // 包含3個參數的建構方法
    public Employee(int empno, String name, long salary) {
        super();
        this.empno = empno;
        this.name = name;
        this.salary = salary;
    }

    // 3個 get()方法
    public int getEmpno() {
        return empno;
    }


    public String getName() {
        return name;
    }



    public long getSalary() {
        return salary;
    }

    // 用於打印Employee類對象信息的toString()方法
    @Override
    public String toString() {
        return "員工信息: [員工編號:" + this.getEmpno() + ", 員工姓名:" + this.getName() + ", 薪水:" + this.getSalary() + "]";
    }

    
    
    
    
}


Manager.java


package employee;

public class Employee {
    
    private int empno; //員工編號
    private String name; //員工姓名 
    private long salary; //薪水 
    
    // 包含3個參數的建構方法
    public Employee(int empno, String name, long salary) {
        super();
        this.empno = empno;
        this.name = name;
        this.salary = salary;
    }

    // 3個 get()方法
    public int getEmpno() {
        return empno;
    }


    public String getName() {
        return name;
    }



    public long getSalary() {
        return salary;
    }

    // 用於打印Employee類對象信息的toString()方法
    @Override
    public String toString() {
        return "員工信息: [員工編號:" + this.getEmpno() + ", 員工姓名:" + this.getName() + ", 薪水:" + this.getSalary() + "]";
    }

    
    
    
    
}


Test.java


package employee;

// 測試類
public class Test {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        // 創建一個Employee類對象
        Employee e1 = new Employee(1000,"張三",15000);
        // 打印這個對象的信息
        System.out.println(e1);
        
        // 創建一個Manager類對象
        Manager m1 =  new Manager(600,"李四",20000,125000);
        // 打印這個對象的信息
        System.out.println(m1);
    }

}


img