Rufen Sie eine untergeordnete Klassenmethode aus einem übergeordneten Klassenobjekt auf
Ich habe die folgenden Klassen
class Person {
private String name;
void getName(){...}}
class Student extends Person{
String class;
void getClass(){...}
}
class Teacher extends Person{
String experience;
void getExperience(){...}
}
Dies ist nur eine vereinfachte Version meines aktuellen Schemas. Anfangs kenne ich den Typ der Person nicht, die erstellt werden muss, daher übernimmt die Funktion, die die Erstellung dieser Objekte handhabt, die allgemeine FunktionPerson
Objekt als Parameter.
void calculate(Person p){...}
Jetzt möchte ich mit diesem übergeordneten Klassenobjekt auf die Methoden der untergeordneten Klassen zugreifen. Ich muss auch von Zeit zu Zeit auf übergeordnete Klassenmethoden zugreifenIch kann es nicht zusammenfassen.
Ich denke, ich habe im obigen Beispiel zu viel vereinfacht. Hier ist also die tatsächliche Struktur.
class Question {
// private attributes
:
private QuestionOption option;
// getters and setters for private attributes
:
public QuestionOption getOption(){...}
}
class QuestionOption{
....
}
class ChoiceQuestionOption extends QuestionOption{
private boolean allowMultiple;
public boolean getMultiple(){...}
}
class Survey{
void renderSurvey(Question q) {
/*
Depending on the type of question (choice, dropdwn or other, I have to render
the question on the UI. The class that calls this doesnt have compile time
knowledge of the type of question that is going to be rendered. Each question
type has its own rendering function. If this is for choice , I need to access
its functions using q.
*/
if(q.getOption().getMultiple())
{...}
}
}
Die if-Anweisung lautet "getMultiple for QuestionOption kann nicht gefunden werden." OuestionOption verfügt über viel mehr untergeordnete Klassen, die verschiedene Arten von Methoden haben, die unter den Kindern nicht üblich sind (getMultiple ist unter den Kindern nicht üblich).