Wie kann man den Mangel an abstrakten Feldern in Java umgehen?

Angenommen, wir haben eine abstrakte KlasseA und wir wollen alle Unterklassen zwingen, ein bestimmtes Feld zu haben. Dies ist in Java nicht möglich, da wir keine abstrakten Felder definieren können.

Problemumgehung 1: Erzwinge, dass Unterklassen eine Methode implementieren, die den gewünschten Wert liefert.

abstract class A {
  abstract int getA();
}

Nachteil: Jede Unterklasse muss eine Methode für jedes abstrakte Feld implementieren, das wir haben möchten. Dies kann zu vielen Implementierungen von Methoden führen.

Vorteil: Wir können die Methode verwendengetA in der abstrakten Klasse und implementieren Methoden damit inA ohne sie in jeder Unterklasse zu implementieren. Der Wert hinter der Methode kann jedoch nicht von der abstrakten Klasse überschrieben werden.

Problemumgehung 2: Simulieren Sie das abstrakte Feld, indem Sie die Unterklasse zwingen, der abstrakten Klasse einen Wert zuzuweisen.

abstract class A {
  int a;

  public A(int a) {
    this.a = a;
  }
}

Nachteil: Wenn wir mehrere Felder (> 10) haben, sieht der Super-Konstruktor-Aufruf etwas hässlich und verwirrend aus.

Vorteil: Wir können das Feld verwendena in der abstrakten Klasse und implementieren Methoden damit inA ohne sie in jeder Unterklasse zu implementieren. Plus der Werta kann von der abstrakten Klasse überschrieben werden.

Frage: Welche Problemumgehung ist der übliche Weg, um das Ziel zu erreichen? Vielleicht gibt es eine bessere als die oben genannten?

Antworten auf die Frage(5)

Ihre Antwort auf die Frage