質問内容(問題文)
スッキリわかるJAVA入門第三版11章の練習問題にて、以下の問いがされていました。
(問)ある会社では、会社の資産として保有するものを管理するプログラムを作ろうとしています。現地点では、「コンピュータ」「本」を表す、次のような2つのクラスがあります。
<Book.java> public class Book extends TangibleAsset{ //フィールド String name; int price; String color; String isbn; //コンストラクタ public Book(String name,int price,String color,String isbn){ this.name = name; this.price = price; this.color = color; this.isbn = isbn; } //メソッド public String getName(){ return this.name; } public int price(){ return this.price; } public String color(){ return this.color; } public String isbn(){ return this.isbn; } } <Computer.java> public class Computer extends TangibleAsset{ //フィールド String name; int price; String color; String makerName; //コンストラクタ public Computer(String name,int price,String color,String makerName){ this.name = name; this.price = price; this.color = color; this.makerName = makerName; } //メソッド public String getName(){ return this.name; } public int getprice(){ return this.price; } public String getcolor(){ return this.color; } public String getMakerName(){ return this.makerName; } }
今後、コンピュータと本以外にも、さまざまな形ある資産を管理していきたい場合に有用な「有形資産(TangibleAsset)」という名前の抽象クラス(継承の材料)を作成してください。また、ComputerやBookは、その親クラスを用いた形に修正してください。
上記の問題に対する解答
上記の問いに対する解答は以下のコードでした。
<TangibleAsset.java> public abstract class TangibleAsset{ String name; int price; String color; public abstract TangibleAsset(String name,int price,String color){ this.name = name; this.price = price; this.color = color; } public String getName(){ return this.name; } public int getPrice(){ return this.price; } public String getColor(){ return this.color; } } <Book.java> public class Book extends TangibleAsset{ //フィールド String isbn; //コンストラクタ public Book(String name,int price,String color,String isbn){ super(name,price,color); this.isbn = isbn; } //メソッド public String isbn(){ return this.isbn; } } <Computer.java> public class Computer extends TangibleAsset{ //フィールド String makerName; //コンストラクタ public Computer(String name,int price,String color,String makerName){ super(name,price,color); this.makerName = makerName; } //メソッド public String getMakerName(){ return this.makerName; } }
具体的な質問内容
TriangleAsset.javaは抽象クラスであると問題文に書いてあるにもかかわらず、なぜ解答のTriangleAsset.javaのgetName()、getPrice()、getColor()の三つのメソッドは{}の中に処理内容が記述されているのでしょうか?
中身に抽象メソッドが無くても、抽象クラスとして定義が可能なのでしょうか?
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2020/10/11 11:16