Vorbei Superklasse object als parameter an Unterklasse-Konstruktor (in java)

Ich habe mich ein bisschen auf der Suche, aber ich bin entweder stellst die richtige Frage, oder nicht richtig erinnern. In jedem Fall, in Java, Frage ich mich, ob es möglich ist, pass der super-Klasse-Objekt als parameter an eine Unterklasse und was die effizienteste Art und Weise zu machen, das Objekt die Daten zur Verfügung, um die Klasse super-Klasse.

Code-Beispiele:

public class superclass {
  String myparm1;
  String myParm2;
  int myParmN;

  public superclass(String p1, String p2, int pn)
  {
    this.myparm1 = p1;
    this.myparm2 = p2;
    this.myParmN = pn;
  }
  //other methods here
}

public class subclass extends superclass {
  double b1;
  double b2;

  public subclass(superclass sc, double b1, double b2) {
    //easy way to make sc data available to this class?
    //Do I create a copy or clone method, or some other way?
    //calling super(sc); wouldn't exactly work 
    this.b1 = b1;
    this.b2 = b2;
  }
}

wenn ich einen Konstruktor in der Superklasse, war public superclass(superclass sc) { //assign sc properties to this properties, correct? } dann könnte ich die einfach verwenden super(sc);

  • Wenn der superclass-Konstruktor erwartet zwei Strings und ein int ist, müssen Sie den Aufruf super() mit 2 Strings und ein int. Es gibt keine Möglichkeit um ihn herum. Wenn diese 3 Werte ausgesetzt sind, durch sc, dann bekommen Sie, und apsss Sie super().
  • Warum gehst du nicht super(sc.p1, sc.p2, sc.p3)?
  • superclass(superclass sc)? Aufruf super(sc) gar nicht funktioniert, dann weil es kein Object Konstruktor mit superclass als parameter
  • Raffaele. Natürlich, mit einer kleinen Anzahl von Eigenschaften, das ist einfach. Aber angenommen, meine Klasse hat eine große Anzahl von Eigenschaften. (Es kann sein bad-design in diesem Beispiel natürlich, aber ich schweife ab.)
  • Wenn Ihre Oberklasse hat eine große Anzahl von Eigenschaften, wird es immer wichtiger, zu Kapseln, die details zu kopieren. Hinzufügen Sie können eine Kopie-Konstruktor in der superclass Klasse, von der form, die Sie am Ende Ihrer Frage -- public superclass(superclass sc)?
InformationsquelleAutor Machtyn | 2016-01-15
Schreibe einen Kommentar