比方说,我有一个叫做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()'是抽象的。 –