阿摩線上測驗 登入

申論題資訊

試卷:100年 - 100年專門職業及技術人員高等建築師、技師、第2次食品技師暨普通不動產經紀人、記帳士考高等_資訊技師#40649
科目:程式設計
年份:100年
排序:0

題組內容

二、一個簡單的薪資系統有以下 3 個類別:(30 分) Employee 類別代表員工,是一個抽象類別(abstract class)。它有 2 個 private 屬性: id、name,分別代表身分證號碼與姓名。它的 toString()方法會傳回員工的身分證號 碼與姓名;pay()抽象方法(abstract method)會計算員工的薪資。 FullTimeEmp 類別代表全職員工,是 Employee 的衍生類別。它有 1 個 private 屬性: salary,代表全職員工的月薪。它的 pay()方法會傳回全職員工的月薪;toString()方 法會先呼叫父類別的 toString(),以取得員工的身分證號碼與姓名,並將 pay()所計 算的薪資合併成一個字串後傳回。 PartTimeEmp 類別代表時薪員工,是 Employee 的衍生類別。它有 2 個 private 屬性: wage、hours,分別代表時薪員工的時薪與每月的工時。它的 pay()方法會傳回時薪 員工的月薪;toString()方法會先呼叫父類別的 toString(),以取得員工的身分證號碼 與姓名,並將時薪與每月的工時及 pay()所計算的薪資,合併成一個字串後傳回。

申論題內容

⑵試以 Java 語言撰寫上述 3 個類別的完整定義。

詳解 (共 1 筆)

詳解 提供者:hchungw
Employee 類(抽象類)
java
public abstract class Employee {
    private String id;
    private String name;
    public Employee(String id, String name) {
        this.id = id;
        this.name = name;
    }
    @Override
    public String toString() {
        return "ID: " + id + ", Name: " + name;
    }
    public abstract double pay();
}
FullTimeEmp 類
java
public class FullTimeEmp extends Employee {
    private double salary;
    public FullTimeEmp(String id, String name, double salary) {
        super(id, name);
        this.salary = salary;
    }
    @Override
    public double pay() {
        return salary;
    }
    @Override
    public String toString() {
        return super.toString() + ", Salary: " + pay();
    }
}
PartTimeEmp 類
java
public class PartTimeEmp extends Employee {
    private double wage;
    private double hours;
    public PartTimeEmp(String id, String name, double wage, double hours) {
        super(id, name);
        this.wage = wage;
        this.hours = hours;
    }
    @Override
    public double pay() {
        return wage * hours;
    }
    @Override
    public String toString() {
        return super.toString() + ", Wage: " + wage + ", Hours: " + hours + ", Salary: " + pay();
    }
}
在這些類中,Employee類是一個抽象類,它定義了id和name屬性以及一個抽象方法pay(),用於計算員工的薪資。toString()方法返回員工的身份證號碼和姓名。
FullTimeEmp類和PartTimeEmp類繼承自Employee類。FullTimeEmp類添加了salary屬性,並實現了pay()方法來返回月薪。PartTimeEmp類添加了wage和hours屬性,並實現了pay()方法來根據時薪和工作小時數計算月薪。兩個子類都覆蓋了toString()方法,以包括員工的薪資資訊。