Methodenaufrufe im Konstruktoren

memo1990

Aktives Mitglied
Guten Abend Community,

heute habe ich erfahren, dass man (überschreibbare) Methoden nicht in Konstruktoren aufrufen sollte, da evtl. die Methoden auf Variablen zugreifen, die noch nicht initialisiert sind, was sinn macht.

Jetzt frage ich mich aber, warum in Tutorials Quellcodes gezeigt werden, wo genau das gemacht wird. Gutes Beispiel ist das ableiten eines JFrames. Im Konstruktor werden die Komponenten initialisiert und in das JFrame hinzugefügt, wodurch ich die add()-Methode aufrufen muss.

Was ist eure Meinung dazu?

MfG Mehmet B.
 

Robat

Top Contributor
Was ist eure Meinung dazu?
Nicht von JFrame erben. Du machst ja auch nicht für jeden String eine eigene Klasse nur weil du einen neuen String erzeugen willst ;)
Außerdem: Du überschreibst die Methode add() ja nicht. Demnach sollte es kein Szenario geben wo es da zu Problemen kommen kann.

Was zu Problemen führen kann ist folgendes Szenario:
Java:
abstract class Base {
    Base() {
        methodA();
    }

    abstract void methodA();
}
class Bar extends Base {
    String name;

    Bar() {
        this.name = "Max";
    }

    @Override
    void methodA() {
        System.out.println(name);
    }
}
new Bar();
Im Konstruktor der Klasse Base ist die Bar Klasse noch nicht mit der Initialisierung der Member fertig. Dennoch wird die Methode methodA() aufgerufen und gibt null aus, weil name noch kein Wert zugewiesen wurde. Wenn du dir jetzt vorstellst dass eben nicht nur etwas ausgegeben wird, sonder Operationen mit name durchgeführt werden, kann es schnell (z.B) zu einer NPE kommen.
 

mrBrown

Super-Moderator
Mitarbeiter
Jetzt frage ich mich aber, warum in Tutorials Quellcodes gezeigt werden, wo genau das gemacht wird.
[...]
Was ist eure Meinung dazu?

Die meisten Tutorials sind einfach schlecht (ganz besonders bei YouTube...) ;) Und dadurch, dass es viele so machen, gucken sich das viele für ihr eigenes Tutorial ab, und es verbreitet sich weiter.



In dem JFrame-Fall sind es drei verpönte Dinge gleichzeitig:
Das Erben von JFrame an sich, das Aufrufen von überschriebenen Methoden und das weitergeben von this (was in add passiert).
 

memo1990

Aktives Mitglied
Das mit dem ableiten eines JFrame habe ich in einem Fachbuch gelernt (Jetzt lerne ich Java 7, von Péter Müller u. Dirk Louis).

Nicht von JFrame erben.

Wieso sollten die es dann so lehren? Was ist außerdem falsch daran, von JFrame abzuleiten? Der Swing-Builder in NetBeans leitet ebenfalls von JFrame ab.

Du machst ja auch nicht für jeden String eine eigene Klasse nur weil du einen neuen String erzeugen willst.

Ich will an der Klasse auch nichts anpassen oder erweitern.
 

mrBrown

Super-Moderator
Mitarbeiter
Nein, du nutzt es nur, durch Dinge hinzufügen verändertes du ja nicht ein JFrame an sich.


Analog: wenn du eine Liste von Elemente brauchst, nutzt du ja auch einfach nur eine Liste, und schreibst nicht eine extra Klasse, nur um „extends ArrayList“ zu schreiben ;)
 

memo1990

Aktives Mitglied
Tut mir leid wenn ich nochmal widerspreche bzw. nachhacke. Wenn ich doch in einer Klasse, die von JFrame abgeleitet ist, neue Attribute (die Komponenten) hinzufüge, verändere ich in dem Fall doch die JFrame.

Abseits davon. Wieso wird im Swing-Builder von NetBeans der Code so generiert oder es in Lehrbüchern so gezeigt, wenn man von JFrame nicht ableiten sollte?

MfG Mehmet B.
 

mrBrown

Super-Moderator
Mitarbeiter
Tut mir leid wenn ich nochmal widerspreche bzw. nachhacke. Wenn ich doch in einer Klasse, die von JFrame abgeleitet ist, neue Attribute (die Komponenten) hinzufüge, verändere ich in dem Fall doch die JFrame.
Nein, Komponenten hinzufügen ist nicht das gleiche, wie eine Klasse erweitern.
Du willst einfach nur Komponenten zu einem Fenster hinzufügen (also ein Objekt der Klasse JFrame verändern), dazu musst du nicht die Klasse verändert (was JFrame erweitern wäre).

Mal ein "Echt-Welt"-Beispiel: Einkaufskorb und Waren.
Baust du dir für jeden Einkauf einen neuen Einkaufskorb, je nachdem welche Waren du reinlegst?
Oder nutzt du einfach nur einen Einkaufskorb, und legst Waren rein?



Abseits davon. Wieso wird im Swing-Builder von NetBeans der Code so generiert oder es in Lehrbüchern so gezeigt, wenn man von JFrame nicht ableiten sollte?
Weil viele es eben falsch machen ;)

In den "richtigen" Fachbüchern wirst du immer wieder auf Composition over Inheritance stoßen, und eben dieses Grundprinzip gilt auch JFrames.
 

memo1990

Aktives Mitglied
Ich glaube ich habe es verstanden wie ihr das meint. Vorallem das mit dem Echt-Welt-Beispiel.

Ich habe mich auch falsch ausgedrückt. Ich verändere nicht die Klasse JFrame an sich (das Verhalten eines JFrame), ich erweitere es um Komponenten.

Weil viele es eben falsch machen

Naja, NetBeans, das unteranderem von Orcale kommt, machen es also auch falsch?

Wenn es ein gutes "Fachbuch" wäre, dann stünde ganz am Anfang, dass Ableitung genutzt wird um den Code kurz zu halten.

Ja das ist mir Bewusst.
 

mihe7

Top Contributor
Oh, mein Lieblingsthema...

Wenn ich doch in einer Klasse, die von JFrame abgeleitet ist, neue Attribute (die Komponenten) hinzufüge, verändere ich in dem Fall doch die JFrame.

Du änderst dadurch weder etwas an der Implementierung von JFrame, noch erweiterst Du Funktionalität.

Gehen wir mal von folgendem Beispiel aus (Skizze):
Java:
public class Hauptfenster extends JFrame {
    public Hauptfenster() {
        JLabel greeting = new JLabel(" ");
        JTextField name = new JTextField(20);
        JButton button = new JButton("Greet!");
        button.addActionListener(e -> greeting.setText("Hallo " + name.getText()));
        setLayout(new FlowLayout(FlowLayout.LEFT, 10, 10));
        add(name); add(button); add(greeting);
        setTitle("Hauptfenster");
        setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    }
}

Die Klasse der Hauptfenster erweitert JFrame um ein Eingabefeld, eine Schaltfläche sowie ein Label, das einen freundlich begrüßt, sobald man die Schaltfläche anklickt.

Also, alles in Ordnung, oder?
Nein, alles falsch.

Da Hauptfenster Subtyp von JFrame ist, muss sich Hauptfenster wie ein JFrame verwenden lassen, z. B. so:
Java:
public void reset(JFrame frame) {
    frame.setTitle("");
    frame.setCloseOperation(JFrame.HIDE_ON_CLOSE)
    frame.getContentPane().setLayout(new BorderLayout());
    frame.getContentPane().removeAll();
}

Wende ich diese Methode auf ein Hauptfenster-Objekt f an, dann sind alle zuvor gemachten Zusicherungen weg (enthält ein Eingabefeld, eine Schaltfläche, ...) Im Prinzip unterscheidet sich das Hauptfenster-Objekt dann nicht mehr von einem new JFrame().

Ebenso gut hätte man
Java:
public class Hauptfenster extends JFrame {
}
implementieren können.

Um mal ein Positiv-Beispiel zu nennen: Erweiterung eines JPanels um die Darstellung eines Hintergrundbilds. Hierbei wird JPanel tatsächlich um Funktionalität erweitert.

Naja, NetBeans, das unteranderem von Orcale kommt, machen es also auch falsch?
Die Frage ist nicht, von wem es kommt.
 

memo1990

Aktives Mitglied
Danke für deine Erklärung @mihe7. Das habe ich soweit verstanden. Das Trifft in dem Fall auf die Klasse JFrame zu, da Sie so implementiert ist.

Wenn ich aber aber folgenden Code schreibe, ist es eine typische Vererbung/Erweiterung:

Java:
class Mitarbeiter {
    private String name;
    private int gehalt;
 
    Mitarbeiter(String name, int gehalt) {
        this.name = name;
        this.gehalt = gehalt;
    }
 
    public String getName() {
        return name;
    }
 
    public String getGehalt() {
        return gehalt;
    }
 
    public String getRang() {
        return "Mitarbeiter";
    }
}

class Azubi extends Mitarbeiter {
    private int ausbildungsjahr;
 
    Azubi(String name, int gehalt, int ausbildungsjahr) {
        super(name, gehalt);
        this.ausbildungsjahr = ausbildungsjahr;
    }
 
    @Override
    public String getRang() {
        return "Auszubildender";
    }
}

Zum eigentlichen Thema zurück. Wenn ich weiß wie die Methode implementiert, also sie auf kein Attribut zurückgreift, wo der Konstruktor noch nicht initialisieren haben könnte, sollte es ja kein Problem darstellen die Methode im Konstruktor aufzurufen. Aber ich denke mal das ist ein schlechter Programmierstil.

Ich werde mir auch das "Komposition an stelle von Vererbung" bzw. "Open/Closed Prinzip" genauer anschauen. Danke dafür.
 
Zuletzt bearbeitet:

Javinner

Top Contributor
@memo1990
Kleine Verbesserung am Code:
statt..
Java:
public String getRang() {
    return "Mitarbeiter";
}
lieber..
Java:
public String getRang() {
    return getClass().getSimpleName();
}

Weiterhin..
Java:
public String getGehalt() {
    return gehalt;
}
sollte ein int zurückgeben, schau dir den primitiven Typ an ;)
Im Konstruktor würde ich die Parameter auf "Null" prüfen. Hat sich bewehrt.

Class Objects#requireNonNull(T obj)
 
Zuletzt bearbeitet von einem Moderator:

mrBrown

Super-Moderator
Mitarbeiter
@memo1990
Kleine Verbesserung am Code:
statt..
Java:
public String getRang() {
    return "Mitarbeiter";
}
lieber..
Java:
public String getRang() {
    return getClass().getSimpleName();
}
Wobei das eher eine Verschlimmerung und keine Verbesserung ist ;)
Code hat nichts in für Menschen gedachten Ausgaben zu suchen (Ausnahmen bestätigen die Regeln, aber in so einem Fall gilt es)
 

memo1990

Aktives Mitglied
Zuletzt bearbeitet:

mihe7

Top Contributor
Wenn ich aber aber folgenden Code schreibe, ist es eine typische Vererbung/Erweiterung
Lassen wir das "typisch" weg und sagen wir ein eingeschränktes Ja ;)

Wenn ich weiß wie die Methode implementiert, also sie auf kein Attribut zurückgreift, wo der Konstruktor noch nicht initialisieren haben könnte, sollte es ja kein Problem darstellen die Methode im Konstruktor aufzurufen.

Es geht darum, dass Du nicht wissen kannst, was abgeleitete Klassen machen. Siehe dazu das Beispiel von @Robat.
 

Javinner

Top Contributor
@mihe7
Ich ging davon aus, dass die Klasse Mitarbeiter nicht verändert wird und die Bezeichnung nur der Übung dient. Wenn man denn mehrere Sprachen einführen will, dann muss man a) der Klasse die Region mitteilen und b) die Methode getRang() eh anpassen.
Java:
public class Employee
{

    public static void main(String[] args)
    {
       
        String german = Locale.getDefault().getISO3Language();
        Mitarbeiter mitarbeiter = new Mitarbeiter(german);
        System.out.println(mitarbeiter.getRang());

        String english = Locale.ENGLISH.getISO3Language();
        Mitarbeiter employee = new Mitarbeiter(english);
        System.out.println(employee.getRang());


    }

}
/** Output */
Mitarbeiter
Employee
Aber hier gibt es bestimmt noch paar Herangehensweisen mehr und sicher auch einige schönere, als mein auf die Schnelle zusammengezimmertes Beispiel :)
 

mrBrown

Super-Moderator
Mitarbeiter
Jetzt lese ich den Satz bereits zum Dritten Mal und weiß immer noch nicht, wie es gemeint ist :p
Noch mal zur Erklärung, was ich meinte:
Der Klassenname ist ein Implementierungsdetail, den sollten höchstens andere Programmierer, aber keine "Nutzer" sehen.
Der Rang dagegen ist entweder als Ausgabe für irgendwen gedacht oder als Information für andere Programmiere, die die Klasse nutzen.
Im zweiten Fall ist das simpel: Ein String ist kein sinnvoller Datentyp, entweder man nutzt es da einen passenden, oder verzichtet drauf (wenn es nur der Klassenname ist, hat man diese Information ja eh;) ).

Im ersten Fall sollte die Ausgabe dann, weil sie Menschenlesbar ist, eben nicht vom Code abhängen. Im einfachsten Fall schreibt man einfach den String, der übersteht dann auch Refactorings und zB Vererbung. Im Idealfall kommen aber Menschenlesbare Dinge gar nicht in der Klasse vor (Single responsibility principle ;)), sondern dort nur ein sinnvoller Datentyp, der dann außerhalb in eine Menschenlesbare Form gebracht wird
 

memo1990

Aktives Mitglied
Das ist folgender Code ein uneingeschränktes ja?! ;)

Java:
abstract class Mitarbeiter {
    private String name;
    private String rang;
    private int gehalt;
   
    Person(String name, String rang, int gehalt) {
        this.name = name;
        this.rang = rang;
        this.gehalt = gehalt;
    }
   
    public String getName() {
        return name;
    }
   
    public String getRang() {
        return rang;
    }
   
    public int getGehalt() {
        return gehalt;
    }
}

class Geselle extends Mitarbeiter {
    private int berufsjahre;
   
    Mitarbeiter(String name, String rang, int gehalt) {
        super(name, rang, gehalt);
    }
   
    public int getBerufsjahre() {
        return berufsjahre;
    }
}

class Azubi extends Mitarbeiter {
    private int ausbildungsjahr;
    Azubi(String name, String rang, int gehalt, int ausbildungsjahr) {
        super(name, rang, gehalt);
        this.ausbildungsjahr = ausbildungsjahr;
    }
   
    public int getAusbildungsjahr() {
        return ausbildungsjahr;
    }
}
 

mihe7

Top Contributor
Jetzt müssen wir differenzieren... Sieht man mal davon ab, dass die Berufsjahre nirgends gesetzt werden, würde ich dem - rein von der technischen Seite her - zustimmen: die Objekte können immer eindeutig einer der beiden Subklassen zugeordnet werden. Von der Konzeption her ist es eine ganz andere Frage, die sich aber nicht pauschal beantworten lässt.

Für eine Personalverwaltung taugt das Modell z. B. nicht. Beispiel: Du hast einen Azubi, nennen wir ihn mal Hans. Irgendwann ist der Kerl mit seiner Ausbildung fertig und bekommt den Gesellenbrief. Dann ist er Geselle. Damit hätte Hans in Deinem Modell mehrere Identitäten. Schizophrenie tut selten gut ;)

Mit fällt ehrlich gesagt auch kein Fall ein, für den das angegebene Modell gut geeignet wäre, auch weil sich die Subklassen zu stark ähneln. Aber ich kann natürlich nicht ausschließen, dass es einen solchen Fall gibt.
 

memo1990

Aktives Mitglied
Jetzt müssen wir differenzieren... Sieht man mal davon ab, dass die Berufsjahre nirgends gesetzt werden, würde ich dem - rein von der technischen Seite her - zustimmen

Ja, da habe ich auf die Schnelle die dafür vorgesehene set-Methode vergessen. Aber es ging mir nur um die allgemeine Vorgehensweise.

Für eine Personalverwaltung taugt das Modell z. B. nicht. Beispiel: Du hast einen Azubi, nennen wir ihn mal Hans. Irgendwann ist der Kerl mit seiner Ausbildung fertig und bekommt den Gesellenbrief. Dann ist er Geselle. Damit hätte Hans in Deinem Modell mehrere Identitäten. Schizophrenie tut selten gut ;)

Man könnte die Daten vom Objekt Hans (Typ Azubi) auslesen und in ein neues Objekt vom Typ Geselle instanziieren?! Wieso sollte er dann mehrere Identitäten haben?

Es streift zwar vom eigentlichen Thema ab, aber das Interessiert mich. :D

Zu der Aussage nochmal:
Es geht darum, dass Du nicht wissen kannst, was abgeleitete Klassen machen.

Doch, wenn ich alle Klassen, mit denen ich arbeite selbst schreibe/geschrieben habe.
 
Zuletzt bearbeitet:

mrBrown

Super-Moderator
Mitarbeiter
Man könnte die Daten vom Objekt Hans (Typ Azubi) auslesen und in ein neues Objekt vom Typ Geselle instanziieren?! Wieso sollte er dann mehrere Identitäten haben?

Du hast dann irgendwann gleichzeitig Geselle{Hans} und Azubi{Hans}, für die auch noch gilt, dass Geselle{Hans} != Azubi{Hans}.
Die Auswirkung davon kann man verringern, aber warum nicht gleich ganz Einschänken? ;)

zB: Eine Klasse Mitarbeiter (oder Person), die nur den Namen und eine Liste von Ereignissen enthält.
Beim Ausbildungsbeginn wird dann ein "AusbildungBegonnen"-Objekt hinzugefügt, zum Ende ein "AusbildungsEnde"-Objekt und ein "AnstellungBegonnen".
Die eine Person bleibt dann immer gleich und es wird nur gespeichert, was mit ihr passiert.


Doch, wenn ich alle Klassen, mit denen ich arbeite selbst schreibe/geschrieben habe.
Ja, schon - aber willst du deine Klassen wirklich so aufbauen, dass du immer jedes Detail aus allen Klassen um Kopf haben musst?
 

mihe7

Top Contributor
Man könnte die Daten vom Objekt Hans (Typ Azubi) auslesen und in ein neues Objekt vom Typ Geselle instanziieren?! Wieso sollte er dann mehrere Identitäten haben?

Weil Objekte Identität besitzen. Du schreibst ja selbst: und in ein neues Objekt vom Typ Geselle ... - dieses Objekt hat eine andere Identität als das Objekt vom Typ Azubi. Ergo: zwei Identitäten für Hans. Abgesehen davon hast Du wenigstens zu dem Zeitpunkt die zwei Objekte, von denen @mrBrown gesprochen hat.

Doch, wenn ich alle Klassen, mit denen ich arbeite selbst schreibe/geschrieben habe.
Ja, und wenn Du jedesmal, also auch nach Jahren, nachschaust, ob es ein Problem geben könnte.

Weder beim einen, noch beim anderen Thema sind die Aussagen in Stein gemeißelt. Man kann begründen, warum man etwas so oder so macht. Nichts wird dadurch automatisch richtig oder falsch.
 

mihe7

Top Contributor
Die ursprüngliche Argument war, dass Du nicht wissen kannst, was die abgeleiteten Klassen machen. Das Gegenargument war, dass das schon der Fall wäre, wenn Du die Klassen alle selber schreibst.

Das ist richtig, Du musst allerdings sicherstellen, dass Du in der abgeleiteten Klasse nichts machst, was zu einem Problem führen könnte. Nach z. B. fünf Jahren(*) wirst Du die Details nicht mehr 100 %-ig aus dem Kopf kennen. Dem entsprechend musst Du immer im Code nachsehen.

(*) real bewegen wir uns im Bereich von Tagen/Wochen, je nachdem an wie vielen (Teil-)Projekten Du gleichzeitig arbeitest.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Methodenaufrufe abstrakte Klassen, Interfaces Java Basics - Anfänger-Themen 17
B Zuweisungen und Methodenaufrufe in Bedingung der while Schleife? Java Basics - Anfänger-Themen 2
S Java Methodenaufrufe zählen Java Basics - Anfänger-Themen 4
M Lange Methodenaufrufe == suboptimales Klassendesign? Java Basics - Anfänger-Themen 5
D Wie baue ich sinnvoll eine Klasse, genauer die Methodenaufrufe auf? Java Basics - Anfänger-Themen 4
E Methoden Methodenaufrufe zählen Java Basics - Anfänger-Themen 11
D Interfaces und allgemeingültige Methodenaufrufe Java Basics - Anfänger-Themen 6
A Methodenaufrufe von Anonymen Klassen Java Basics - Anfänger-Themen 6
Kenan89 Methodenaufrufe verketten Java Basics - Anfänger-Themen 16
H Methodenaufrufe protokollieren Java Basics - Anfänger-Themen 7
T Methodenaufrufe zählen Java Basics - Anfänger-Themen 24
R Methodenaufrufe Java Basics - Anfänger-Themen 15
L Methodenaufrufe Protokollieren Java Basics - Anfänger-Themen 5
G Methodenaufrufe funktionieren nicht Java Basics - Anfänger-Themen 2
L Reihenfolge der Methodenaufrufe Java Basics - Anfänger-Themen 6
N Verschiedene Konstruktoren mit gleichen Datentypen Java Basics - Anfänger-Themen 8
C Konstruktoren und Variablen Java Basics - Anfänger-Themen 42
lougoldi Verkettung von Methoden und Konstruktoren Java Basics - Anfänger-Themen 4
J Konstruktoren und Grafik Java Basics - Anfänger-Themen 3
A Cannot find symbol mit Konstruktoren Java Basics - Anfänger-Themen 27
L Brauche Hilfe beim arbeiten mit Konstruktoren Java Basics - Anfänger-Themen 20
C Objekte und Konstruktoren Java Basics - Anfänger-Themen 2
A Konstruktoren Vererbung Java Basics - Anfänger-Themen 3
W Vererbung, abstract und Konstruktoren Java Basics - Anfänger-Themen 30
M Vererbung Konstruktoren mit festen Werte Java Basics - Anfänger-Themen 2
F Mehrere Konstruktoren? Wofür? Java Basics - Anfänger-Themen 21
J Konstruktoren in Initialisierungsblöcke Java Basics - Anfänger-Themen 6
T Konstruktoren Java Basics - Anfänger-Themen 25
D was bedeutet this. bei Konstruktoren? Java Basics - Anfänger-Themen 4
C Konstruktoren und Vererbung Java Basics - Anfänger-Themen 2
C Die Klasse Menge mit Konstruktoren und einfachen Methoden Java Basics - Anfänger-Themen 5
F Mehrere Konstruktoren Java Basics - Anfänger-Themen 10
G Was ist der Nutzen von generischen Konstruktoren? Java Basics - Anfänger-Themen 4
Q Methoden Konstruktoren anlegen Java Basics - Anfänger-Themen 5
B Objekte in Konstruktoren übergeben Java Basics - Anfänger-Themen 5
D Zähler nicht sichtbar (Thema: Konstruktoren) Java Basics - Anfänger-Themen 2
A Überladen von Konstruktoren Java Basics - Anfänger-Themen 2
V Konstruktoren Java Basics - Anfänger-Themen 15
C Klassen StackOverflow bei erster Nutzung von Klassen/Konstruktoren Java Basics - Anfänger-Themen 9
F Konstruktoren Java Basics - Anfänger-Themen 4
M Erste Schritte Verständnis Problem Konstruktoren Java Basics - Anfänger-Themen 13
Y Klassen, Vererbung, Konstruktoren Java Basics - Anfänger-Themen 13
B Klassen Unterschied Konstruktoren. Java Basics - Anfänger-Themen 3
C Erste Schritte Konstruktoren verstehen Java Basics - Anfänger-Themen 7
W OOP Konstruktoren Erklärung Java Basics - Anfänger-Themen 14
N Abarbeitungsreihenfolge von Konstruktoren Java Basics - Anfänger-Themen 12
O Klassen und Konstruktoren Java Basics - Anfänger-Themen 7
V Konstruktoren -> Funktionsaufrufe Java Basics - Anfänger-Themen 7
Q Konstruktoren und Methoden Java Basics - Anfänger-Themen 2
C Konstruktoren Java Basics - Anfänger-Themen 7
J Konstruktoren Java Basics - Anfänger-Themen 10
M Konstruktoren & Veerbung Java Basics - Anfänger-Themen 6
T Konstruktoren Java Basics - Anfänger-Themen 6
P Enum Attribut in Konstruktoren Java Basics - Anfänger-Themen 10
R Vererbung Konstruktoren nicht erkannt Java Basics - Anfänger-Themen 17
H Klassen, Konstruktoren, Instanzen etc Java Basics - Anfänger-Themen 6
J OOP Konstruktoren, setMethode, getMethode usw. Java Basics - Anfänger-Themen 7
A überladene Konstruktoren Java Basics - Anfänger-Themen 7
L Frage zu Konstruktoren und dem this Operator Java Basics - Anfänger-Themen 16
W 2 Konstruktoren Java Basics - Anfänger-Themen 8
B Vererbung und Konstruktoren Java Basics - Anfänger-Themen 33
N Vererbung von Konstruktoren mit Parametern Java Basics - Anfänger-Themen 7
S Konstruktoren verketten Java Basics - Anfänger-Themen 6
A Konstruktoren sollen sich gegenseitig aufrufen Java Basics - Anfänger-Themen 10
B Konstruktoren Sichtbarkeit Java Basics - Anfänger-Themen 2
K Kann man Private-Konstruktoren doch aurufen? Java Basics - Anfänger-Themen 8
E Konstruktoren und Methoden Java Basics - Anfänger-Themen 10
E OOP individual + standard-Konstruktoren Java Basics - Anfänger-Themen 9
S Konstruktoren? Java Basics - Anfänger-Themen 5
K Konstruktoren Java Basics - Anfänger-Themen 13
H Konstruktoren – super! Java Basics - Anfänger-Themen 3
L Geschachtelte Konstruktoren Java Basics - Anfänger-Themen 4
hdi Kleine Design/Convention Frage zu Konstruktoren Java Basics - Anfänger-Themen 4
J Vererbung und Konstruktoren Java Basics - Anfänger-Themen 14
J Problem mit Konstruktoren Java Basics - Anfänger-Themen 2
G Überladen von Konstruktoren mit unterschiedlichen Datentypen Java Basics - Anfänger-Themen 4
H Befehl mit Konstruktoren Java Basics - Anfänger-Themen 2
L Konstruktoren bei Vererbung Java Basics - Anfänger-Themen 13
Z wie kann ich überladene Konstruktoren "umleiten"? Java Basics - Anfänger-Themen 11
D Blöde(?) Frage zu Konstruktoren und set-Methoden Java Basics - Anfänger-Themen 3
G Interface und Konstruktoren Java Basics - Anfänger-Themen 3
G Frage zu Konstruktoren Java Basics - Anfänger-Themen 12
G Verständnisfrage zu Konstruktoren Java Basics - Anfänger-Themen 5
G Konstruktoren Java Basics - Anfänger-Themen 9
A Konstruktoren überladen Java Basics - Anfänger-Themen 9
H Konstruktoren + Hilfe Java Basics - Anfänger-Themen 12
H Konstruktoren werden nie geerbt Java Basics - Anfänger-Themen 3
O Vor-/Nachteile/Unterschiede von Konstruktoren und Methoden Java Basics - Anfänger-Themen 3
Bierhumpen 2 Konstruktoren Java Basics - Anfänger-Themen 15
T mehrere Konstruktoren für eine Klasse Java Basics - Anfänger-Themen 7
J Instantvariablen und Konstruktoren Java Basics - Anfänger-Themen 2
Y Vererben - Konstruktoren Java Basics - Anfänger-Themen 2
Z übergabe von string[] an konstruktoren oder methoden Java Basics - Anfänger-Themen 3
L Klassen, Vererbung und Konstruktoren Java Basics - Anfänger-Themen 10
S Frage zu Konstruktoren Java Basics - Anfänger-Themen 7
G Problem mit Gültigkeit von Variabeln und Konstruktoren Java Basics - Anfänger-Themen 4
C Konstruktoren Java Basics - Anfänger-Themen 4
G Konstruktoren (was, wozu, wieso, warum) Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben