Hey!
Arbeite mich für die Uni nach und nach in Java ein. Momentan bin ich bei der fleißigen Lektüre der Insel. Nebenbei muss ich in einer Gruppe ein Kartenspiel in Java implementieren.
Jetzt habe ich eine Methode Push(object,ip) geschrieben, mit welcher man Objekte über eine Socketverbindung schieben kann. Nun ließt man, dass es immer schlecht sei, Objekte als Parameter zu übergeben, da das prozedurale Programmierung sei.
Gut, ursprünglich wollte ich die Push()-Methode an Objekte vererben. Dabei bin ich auf ein Problem mit der This-Referenz gestoßen.
Hier ein Programm, welches mein Problem verdeutlichen soll: Prozedural:
Der "Fehler" im Programm: Ich muss das Objekt, welches ich auf der Konsole ausgeben will, übergeben. Aber es funktioniert.
OOP:
Ausgabe:
Die Push()-Methode steht hier als Synonym für meine Netzwerkmethode. Habe ich einen Fehler, oder überschreibt die Eltern-Variable die des Kindes?
Ich dachte, nur die Methode wird vererbt und würde dann über this auf die Variable des Kindes zugreifen. Dem scheint nicht so zu sein.
Arbeite mich für die Uni nach und nach in Java ein. Momentan bin ich bei der fleißigen Lektüre der Insel. Nebenbei muss ich in einer Gruppe ein Kartenspiel in Java implementieren.
Jetzt habe ich eine Methode Push(object,ip) geschrieben, mit welcher man Objekte über eine Socketverbindung schieben kann. Nun ließt man, dass es immer schlecht sei, Objekte als Parameter zu übergeben, da das prozedurale Programmierung sei.
Gut, ursprünglich wollte ich die Push()-Methode an Objekte vererben. Dabei bin ich auf ein Problem mit der This-Referenz gestoßen.
Hier ein Programm, welches mein Problem verdeutlichen soll: Prozedural:
Java:
class Mutter {
String Variable = "Elternelement > Mutter";
public void Push() {
}
public void Push(Sohn asd) {
System.out.println(asd.Variable);
}
public void Push(Mutter asd) {
System.out.println(asd.Variable);
}
}
class Sohn extends Mutter {
String Variable = "Kindelement > Sohn";
}
public class ThisReferenz {
public static void main(String[] args) {
Sohn sohn = new Sohn();
Mutter mutter = new Mutter();
System.out.println("laeuft");
System.out.println("Sohn.Push()");
sohn.Push(sohn);
System.out.println("Mutter.Push()");
mutter.Push(mutter);
}
}
OOP:
Java:
class Eltern {
private String Variable = "Elternelement > Mutter";
public void Push() {
System.out.println(this.Variable);
}
}
class Kind extends Eltern {
private String Variable = "Kindelement > Sohn";
}
public class ThisReferenz2 {
public static void main(String[] args) {
Kind sohn = new Kind();
Eltern mutter = new Eltern();
System.out.println("Laeuft");
System.out.println("sohn.Push()");
sohn.Push();
System.out.println("mutter.Push()");
mutter.Push();
}
}
Code:
Laeuft
sohn.Push()
Elternelement > Mutter
mutter.Push()
Elternelement > Mutter
Die Push()-Methode steht hier als Synonym für meine Netzwerkmethode. Habe ich einen Fehler, oder überschreibt die Eltern-Variable die des Kindes?
Ich dachte, nur die Methode wird vererbt und würde dann über this auf die Variable des Kindes zugreifen. Dem scheint nicht so zu sein.