はじめまして。
現在Javaでインスタンス化について学んでおります。
Java
1package beginner_chapter3; 2 3// スーパークラス 4class StaffOv { 5 String name = "名無し"; 6 String getName() { 7 return name; 8 } 9} 10 11// サブクラス 12class ManagerOv extends StaffOv { 13 int salary = 5000000; 14 int getSalary() { 15 return salary; 16 } 17 String getName() { 18 return "【マネージャー】" + name; 19 } 20} 21 22class task3_18 { 23 public static void main(String[] args) { 24 // インスタンス化 25 StaffOv2 m2 = new ManagerOv2(); 26 System.out.println("--------スーパークラス--------"); 27 System.out.println("名前:" + m2.getName()); 28 System.out.println(); 29 30 System.out.println("--------サブクラス--------"); 31 System.out.println("名前:" + m2.getName()); 32 System.out.println("給与:" + m2.getSalary()); 33 } 34}
--------スーパークラス--------
名前: 名無し
--------サブクラス--------
名前:【マネージャー】名無し
給与:5000000
上記のように表示させたいのですが、このコードを実行すると、
--------スーパークラス--------
名前:【マネージャー】名無し
--------サブクラス--------
名前:【マネージャー】名無し
給与:5000000
のように表示されてしまいます。
また、一番下のコードを
java
1System.out.println("給与:" + ((ManagerOv2) m2).getSalary());
上記のようにサブクラスにキャストして表示していたのですが、この書き方はプログラミング的にどうなのか疑問に感じております。
インスタンス化についてよく分かっていない部分もあるのですが、どうすれば正しく表示されるのでしょうか?
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/10/31 03:33