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).

Antworten auf die Frage(7)

Ihre Antwort auf die Frage