Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Hallo,
ich hätte eine Frage zu Klassen und den Aufruf von Konstruktoren.
Ich habe 3 Klassen und möchte von der Klasse 1 ausgehend ein Objekt der Klasse 2 erstellen.
Klasse2 test = new Klasse2(13,12); (in meinem Programm)
Dem Konstruktor der Klasse 2 werden diese 2 Werte übergeben.
Ist es jetzt möglich, dass ich im Konstruktor der Klasse 2, die Werte weiterverwende um den Konstruktor der Klasse 3 aufzurufen?
Der Konstruktor der Klasse 3 sollte ein Objekt der Klasse 3 erstellen auf dessen Methoden ich von Klasse 1 aus zugreifen kann.
Meine bisherigen Versuche sind leider gescheitert. Zwar wird der Konstruktor der Klasse 1 noch aufgerufen, allerdings kommt beim Versuch die Methoden aufzurufen jeweil eine Nullpointer exception.
(Vererbung wollte ich nicht verwenden)
vg
Ominum
class Klasse2
{
Klasse3 k3;
public Klasse2()
{
// Vorher:
//Klasse3 k3 = new Klasse3(); // Falsch: Lokale Variable! Nicht das k3 von oben!
// Nachher:
k3 = new Klasse3();
}
}
Dem strengen Wortlaut Deiner Frage nach lautet die Antwort: Ja. Du kannst im Konstruktor von Klasse2 die Parameter benutzen, um dort eine Instanz von Klasse3 zu erzeugen.
Und nun zu dem, was Du willst: Die Frage ist, ob es Dir was nützt. Du willst die Referenz auf die neue Instanz der Klasse3 ja nicht in Klasse2 haben, sondern in Klasse1. Dafür gibt es zwei Wege:
1. Du rufst den Konstruktor von Klasse3 mit den selben Parametern wie den von Klasse2 auf und zwar beides von Klasse1 aus. D.h. Du erzeugst die neue Instanz von Klasse3 nicht im Konstruktor von Klasse2.
2. Du erzeugst im Konstruktor von Klasse2 die Instanz von Klasse3 und speicherst in der Klasse2 als Instanzvariable (also kein static). Dann schreibst Du einen getter für dieses Feld, welchen Du über die Instanz von Klasse2 aufrufen kannst.
Hallo,
also das ist der Reihe nach mein Sorgencode.
Erstmal die Hauptklasse
Java:
public class Programm
{
public static void main (String[] args)
{
Taschenlampe test = new Taschenlampe(13,12);
test.Taschenlampe_an();
}
}
dann die mittlere Klasse
Java:
public class Taschenlampe
{
private LED eins;
private LED zwei;
public Taschenlampe(int a, int b)
{
LED eins = new LED(a);
LED zwei = new LED(b);
}
public void Taschenlampe_an()
{
eins.on();
zwei.on();
}
}
und die letzte
Java:
public class LED
{
private int pinnummer;
public LED(int pin_auswahl)
{
this.pinnummer = pin_auswahl;
System.out.println("Das ist die übergebene Pinnummer" + this.pinnummer);
}
public void on()
{
System.out.println("Diese Methode soll ausgegeben werden" );
}
}
die Klassen liegen in einem Bluej Projekt.
Ich finde es halt seltsam dass mir beim ausführen der Main zwar noch das println. von der Klasse LED ausgegeben wird, aber danach sofort eine Nullpointer exception auf die Methode eins.on geliefert wird.