super() und this

Luk10

Top Contributor
Hallo,

folgendes Problem:

Ich hab eine Klasse Zelle und eine Klasse RedCell, welche von Zelle erbt!

Nun will ich folgendes machen:

Java:
public class Zelle {
  RedCell a;
  public Zelle (RedCell c) {
    a = c;
  }

Java:
public RedCell () {
  super(this);
  }

Das lässt sich leider nicht kompilieren ...
Gibt es da eine passable lösung?

Ich möchte ein RedCell-Objekt an Zelle übergeben, jedoch in Zelle kein RedCellObjekt instanzieren ...

Danke, Luk
 
Zuletzt bearbeitet:
Nun will ich folgendes machen:

Java:
public Zelle (RedCell c) {
  RedCell a = c;
  }

Vermutlich willst du das nicht. Das bringt nämlich gar nichts. "RedCell a" wird ja nicht weiter verwendet.

Damit wollte ich andeuten, dass du zwar irgendwas erreichen willst, was einem gedanklichen Modell, einer Struktur oder Vorgang in deinem Kopf entspricht, aber der Code, den du hingeschrieben hast, ist nicht das, was du machen willst, sondern das, was du glaubtest machen zu müssen, um dein Ziel zu erreichen.

Ich möchte ein RedCell-Objekt an Zelle übergeben, jedoch in Zelle kein RedCellObjekt instanzieren ...

Das würde eigentlich so gehen
Java:
class Cell
{
    private RedCell redCell = null;

    public Cell(RedCell r)
    {
        this.redCell = r;
    }
}
aber ob das das ist, was du willst, oder nicht, weiß ich auch nicht 😉
 
Ja, ich habe natürlich die Referenz als Instanzvariable, wollte hier nur nicht so viel schreiben ich ediere das gleich!

Mein Problem ist dass ich folgendes NICHT machen kann:

Java:
public class RedCell {
  public RedCell () {
    super(this);
  }
}
 
Es macht auch nicht so viel Sinn, ein Objekt an sich selbst übergeben zu wollen, während es noch erstellt wird....

Ich nehme an, "Cell" hat einen Konstruktor, dem ein Cell oder RedCell-Objekt übergeben werden kann. Und was sollte mit dem übergebenen Objekt gemacht werden? (Insbesondere, wenn das übergebene Objekt 'this' ist... !?)
 
Ah jetzt entwirrt sich mein Knoten im Hirn ...

Da bin ich eine Sach total falsch angegangen ...
Ich wollte einfach eine Methode, welche in RedCell deklariert ist in Zelle aufrufen ohne dabei ein Objekt in Zelle erstellen zu müssen ...

Danke, Luk :rtfm:
 
Wieso willst du ein Objekt einer Unterklasse(Klasse, die geerbt hat) an die Oberklasse(Zelle) übergeben?
Das ergibt eigentlich keinen Sinn und ich glaube, dass deßhalb auch der Compilierer meckert
 
Ich wollte einfach eine Methode, welche in RedCell deklariert ist in Zelle aufrufen ohne dabei ein Objekt in Zelle erstellen zu müssen ...

Was sollte diese Methode denn machen? Vielleicht sollte diese Methode
- entweder schon in der Basisklasse (Cell) liegen oder
- nur in RedCell aufgerufen werden.
Man müßte halt genauer wissen, was das alles soll :bahnhof:
 
Java:
public RedCell () {
    super(this);
  }

das geht meiner meinung nach nicht. wenn im Konstruktor der unterklasse der konstruktor der oberklasse per super() aufgerufen werden soll, dass muss das die erste anweisung im konstruktor der unterklasse sein. allerdings ist das objekt in form von "this" erst nach ende des konstruktors initialisiert.
wie hier schon geschrieben wird, müsstest du mal formulieren, was dein anliegen ist. dann könnte man dir auch entsprechende lösungsansätze vorstellen.
 

Zurück
Oben