Lassen Sie uns sagen, ich habe eine Klasse namens Buch, das abstrakt ist, hat einen privaten variablen Preis und hat auch seine Getter-Methode als abstrakt.Access private Variable von abstrakten Klasse mit Zugriffsmethode als abstrakte
public abstract class Book{
private double price;
public abstract double getPrice();
}//Ends book class
Lassen Sie uns jetzt sagen, ich habe ein gebrauchtes Buch-Klasse, die alle Buches Attribute erbt, hat aber auch ein Alter mit ihm verbunden ist. Außerdem möchte ich, dass diese Klasse die getPrice-Methode von ihrer übergeordneten Klasse überschreibt. Hier stehe ich fest, da die Preisvariable privat ist und die Elternklasse eine abstrakte Getter-Methode hat.
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?
}
}
Danke
Sie selbst tun können und die ganze jdk einen Gefallen Ändern ** privater doppelter Preis; ** bis ** geschützter doppelter Preis; ** Wenn Sie NICHT daran interessiert sind, öffentlichen Zugriff auf diese Variable zu gewähren, aber da UsedBook Buch erweitern soll, ändern Sie besser Ihren Zugriffsmodifizierer privat zu geschützt. Dies stellt sicher, dass die Regeln der Vererbung intakt bleiben. – ShayHaned
So würde es keinen Weg geben, wie ein Benutzer Zugang zum Preis wie oben erklärt bekommen? Ich müsste entweder den variablen Preis in "geschützt" ändern oder den Accessor im Buch nicht abstrakt machen. Richtig? Ich schätze alle schnellen Antworten. – Kevag6
Das grundlegende Problem ist, dass, wenn "Preis" in der abstrakten Oberklasse ist, "getPrice()" in dieser Klasse nicht abstrakt sein kann. Es muss konkret sein und die Getter-Funktion implementieren, da dort das Datenelement definiert ist. Es macht null Sinn, dass "getPrice()" abstrakt ist. –