比方說,我有一個叫做book的類,它是抽象的,具有私有變量價格,並且它的getter方法也是抽象類。從抽象類訪問私有變量,訪問方法爲抽象
public abstract class Book{
private double price;
public abstract double getPrice();
}//Ends book class
現在我們假設我有一個使用的Book類,它繼承了Book的所有屬性,但也有一個與它關聯的年齡。另外我希望這個類從它的父類中覆蓋getPrice方法。這是我卡住的地方,因爲價格變量是私人的,父類有一個抽象的getter方法。
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?
}
}
謝謝
你可以做自己和整個JDK一個贊成改變**私人雙重價格; **改爲**受保護的雙重價格; **如果您不希望向該變量提供公共訪問權限,但由於UsedBook旨在擴展Book,您最好將訪問修改符從私人保護。這將確保繼承規則保持不變 – ShayHaned
因此,如上所述,用戶無法獲得價格權限?我要麼必須將變量價格更改爲受保護的值,要麼使書中的訪問器不是抽象的。正確?我很感激大家的迅速反應。 – Kevag6
根本問題是,如果'price'是抽象超類,那麼'getPrice()'***不能在該類中抽象化。它必須具體並實現getter函數,因爲這是定義數據元素的地方。 'getPrice()'是抽象的。 –