プログラミングを勉強し始めて1か月ほどの素人です。
ある教本の練習問題にて疑問に思ったので質問します。
練習問題:以下のクラスを抽象クラスTangibleAsset(有形資産)から継承させるように書き直しなさい。
つまり、抽象クラスTangibleAssetを作って継承させなさい。という問題です。
java
1**用意されたクラス** 2class Book{ 3 private String name; 4 private int price; 5 private String color; 6 private String isbn; 7 //コンストラクタ 8 public Book(String name,int price,String color,String isbn){ 9 this.name = name; 10 this.price = price; 11 this.color = color; 12 this.isbn = isbn; 13} 14 //getterメソッド 15 public String getName(){return this.name;} 16 public int getPrice(){return this.price;} 17 public String getColor(){return this.color;} 18 public String getIsbn(){return this.isbn;} 19} 20※このBookクラスに加え、内容はほぼ同じでisbnの代わりにmakerNameというフィールドが入ったComputerクラスがあります。 21 22**解凍:** 23 public abstract class TangibleAsset{ 24 private String name; 25 private int price; 26 private String color; 27 public TangibleAsset(String name,int price,String color){ 28 this.name = name; 29 this.price = price; 30 this.color = color; 31 } 32 public String getName(){return this.name;} 33 public int getPrice(){return this.price;} 34 public String getColor(){return this.color;} 35 36} 37//BookクラスとComputerクラスを継承する 38※このクラスを継承してBookクラスとComputerクラスを作る+(isbnとmakerNameフィールドをそれぞれオーバーライド)
抽象クラスとは抽象メソッドが1つでも存在しているクラスだと認識していますが、見たところ抽象メソッドが見当たらないのですが、なぜTangibleAssetが抽象クラスになるのでしょうか。抽象メソッドがなくてもabstractを付ければ抽象クラスになるのですか??そうだとしても、その後の関連問題にもTangibleAssetクラスにabstractをつけなければいけない理由がどうしても見つけられません。普通の親クラス??(superクラス??)ではダメなのでしょうか。
この教本では【抽象クラスはインスタンス化(new)できない】ということも学びました。この問題にはTangibleAssetをインスタンス化させたくないという意図なども読み取れません。
なぜTangibleAssetクラスを抽象クラスにするのか理由があれば教えてください。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/09/29 14:01