私は、抽象クラスでプライベート変数を持ち、抽象クラスとしてゲッターメソッドを持つbookというクラスを持っているとしましょう。アクセスメソッドを持つ抽象クラスからのプライベート変数への抽象的アクセス
public abstract class Book{
private double price;
public abstract double getPrice();
}//Ends book class
ここで、ブックのすべての属性を継承するが、関連付けられているブッククラスがあるとしましょう。また、私はこのクラスが親クラスからgetPriceメソッドをオーバーライドしたい。これは、price変数がプライベートで、親クラスに抽象ゲッターメソッドがあるので、私が立ち往生する場所です。
public class UsedBook extends Book{
private int age;
//constructor
public UsedBook(){
age = 1;
}
@Override
public double getPrice(){
//How can I implement this method so as a user I can access the price?
}
}
Book
のすべての実装がgetPrice()
を実装する必要があり、実装は価格だけを返すように常にある場合、それは抽象的ではありませんあなたに
あなたは自分自身と全体JDKおかげで行うことができます**プライベートダブルプライスを変更する** ** **保護されたダブルプライス** **この変数へのパブリックアクセスを提供することに興味がない場合、しかしUsedBookはBookを拡張することを意図しているので、保護されています。これにより、継承のルールがそのまま残ることが保証されます – ShayHaned
上記の説明に従って、ユーザーが価格にアクセスする方法はありませんか?私は、保護された変数の価格を変更するか、抽象的なではないブックのアクセサーを作る必要があります。正しい?皆様の迅速な対応に感謝します。 – Kevag6
根本的な問題は、 'price'が抽象スーパークラスにある場合、' getPrice() '***はそのクラスの抽象クラスではありません。それは、データ要素が定義されているので、具体的にgetter関数を実装する必要があります。これは、 'getPrice()'が抽象であることをゼロにします。 –