// 抽象クラス Employee
abstract class Employee {
// 抽象メソッド calculateSalary を宣言
public abstract double calculateSalary();
}
// 具象クラス Manager
class Manager extends Employee {
private double baseSalary;
private double bonus;
// コンストラクタ
public Manager(double baseSalary, double bonus) {
this.baseSalary = baseSalary;
this.bonus = bonus;
}
// calculateSalary メソッドã®å®Ÿè£…
@Override
public double calculateSalary() {
return baseSalary + bonus;
}
}
// 具象クラス Developer
class Developer extends Employee {
private double hourlyRate;
private int hoursWorked;
// コンストラクタ
public Developer(double hourlyRate, int hoursWorked) {
this.hourlyRate = hourlyRate;
this.hoursWorked = hoursWorked;
}
// calculateSalary メソッドã®å®Ÿè£…
@Override
public double calculateSalary() {
return hourlyRate * hoursWorked;
}
}
// メインクラス
public class Main {
public static void main(String[] args) {
// Employee åž‹ã®é…列を作æˆ
Employee[] employees = new Employee[2];
// Manager インスタンスをé…åˆ—ã«æ ¼ç´
employees[0] = new Manager(50000, 10000);
// Developer インスタンスをé…åˆ—ã«æ ¼ç´
employees[1] = new Developer(25, 160);
// ãƒãƒªãƒ¢ãƒ¼ãƒ•ィズムを使用ã—ã¦ç•°ãªã‚‹å¾“æ¥å“¡ã®çµ¦ä¸Žã‚’表示
for (Employee employee : employees) {
System.out.println("Employee's Salary: $" + employee.calculateSalary());
}
}
}
ã“ã®ã‚³ãƒ¼ãƒ‰ã§ã¯ã€Employee ã‚¯ãƒ©ã‚¹ãŒæŠ½è±¡ãƒ¡ã‚½ãƒƒãƒ‰ calculateSalary を宣言ã—ã€Manager 㨠Developer クラスãŒãれをオーãƒãƒ¼ãƒ©ã‚¤ãƒ‰ã—ã¦ã„ã¾ã™ã€‚ãã—ã¦ã€Employee åž‹ã®ãƒªã‚¹ãƒˆã« Manager 㨠Developer ã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã‚’æ ¼ç´ã—ã€ãƒãƒªãƒ¢ãƒ¼ãƒ•ィズムを使用ã—ã¦çµ¦ä¸Žã‚’表示ã—ã¦ã„ã¾ã™ã€‚
å‡ºåŠ›çµæžœï¼š
Employee's Salary: $60000.0
Employee's Salary: $4000.0
ã“ã“ã§ã€Manager クラスã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã®çµ¦ä¸Žã¯åŸºæœ¬çµ¦ï¼ˆbaseSalary)ã¨ãƒœãƒ¼ãƒŠã‚¹ï¼ˆbonus)ã®åˆè¨ˆã§ã‚りã€Developer クラスã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã®çµ¦ä¸Žã¯æ™‚給(hourlyRate)ã¨åƒã„ãŸæ™‚間(hoursWorked)ã®ç©ã§ã™ã€‚
「016 抽象クラスã€å•題集リスト
🎯 実習ã§ç†è§£ã‚’æ·±ã‚よã†
ã“ã®å†…容ã«ã¤ã„ã¦JavaDrillã§å®Ÿéš›ã«æ‰‹ã‚’å‹•ã‹ã—ã¦å¦ç¿’ã§ãã¾ã™


コメント