前提・実現したいこと
Java初心者です。
演習でJavaでボーナスを表示するプログラムを作っています。
コマンドライン引数で値を受け取り、それに応じた役職に応じてボーナス額を
表示する、といった内容です。
発生している問題・エラーメッセージ
getBonus()メソッドをオーバーライドして、
getSalaryで値を返して、それに乗算した値が欲しいです。
該当のソースコード
Java
1 2public abstract class Employee { 3 4 private String name; 5 private int salary; 6 7 public Employee(String name,int salary) { 8 this.name = name; 9 this.setSalary(salary); 10 } 11 12 public void introduce() { 13 System.out.println(getPost() + "職の" + name + "です。"); 14 System.out.println("ボーナスは" + salary + "でした。"); 15 } 16 17 public abstract int getBonus(); 18 public abstract String getPost(); 19 20 public int getSalary() { 21 return salary; 22 } 23 24 public void setSalary(int salary) { 25 this.salary = salary; 26 } 27 28 29 30} 31
Java
1 2public class HighEmployee extends Employee{ 3 4 public HighEmployee(String name,int salary) { 5 super(name,salary); 6 } 7 8 public String getPost() { 9 return "上級"; 10 } 11 12 13 @Override 14 public int getBonus() { 15 return getSalary() * 5; 16 } 17 18}
Java
1 2public class LowEmployee extends Employee{ 3 4 public LowEmployee(String name,int salary) { 5 super(name,salary); 6 } 7 8 public String getPost() { 9 return "下級"; 10 } 11 12 @Override 13 public int getBonus() { 14 return getSalary()*2; 15 } 16} 17
Java
1 2public class Main { 3 4 public static void main(String[] args) { 5 // TODO 自動生成されたメソッド・スタブ 6 7 if(Integer.parseInt(args[0]) == 1) { 8 HighEmployee emp = new HighEmployee(args[1],Integer.parseInt(args[2])); 9 emp.introduce(); 10 emp.getPost(); 11 emp.getBonus(); 12 } 13 else if(Integer.parseInt(args[0]) == 2) { 14 LowEmployee emp = new LowEmployee(args[1],Integer.parseInt(args[2])); 15 emp.introduce(); 16 emp.getPost(); 17 emp.getBonus(); 18 } 19 20 } 21 22} 23
結果:
コマンドライン引数
1 田中 500000
上級職の田中です。
ボーナスは500000でした。
試したこと
スーパークラスのメンバ変数のアクセス修飾子がクラス図でprivateと
指定されているので、getter/setterを使って使用できるようにした。
補足情報(FW/ツールのバージョンなど)
回答2件
あなたの回答
tips
プレビュー