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.
Ich will eine Klasse Kfz erstellen die um den Konstruktor Kfz(int sitze, int tankInhalt, flaot verbrauch) erweitert werden soll. Zusätzlich sollen die Attribute aus privat gesetzt werden...
Code:
public class Kfz {
private Kfz(int sitze, int tankInhalt, float verbrauch){
}
}
In einer neuen Klasse, "KonstruktorDemo.java", sollen die Attribute über den Konstruktor Kfz initialisiert werden.
Wie kann ich das denn umsetzen?
Du kannst in einer anderen Klasse nicht auf den Konstruktor zugreifen, weil er private ist. Ist das so gewollt, dann ist es richtig. Nur was macht eine Klasse für einen Sinn, auf die man nicht zugreifen kann?
public class Kfz {
private int sitzeintern;
private int tankInhaltintern;
private float verbrauchintern;
Kfz(int sitze, int tankInhalt, float verbrauch){
this.sitzeintern = sitze;
this.tankInhaltintern = tankInhalt;
this.verbrauchintern = verbrauch;
}
}
Meine KonstruktorDemo.java:
Code:
public class KonstruktorDemo {
public static void main(String args[]){
Kfz minivan = new Kfz(5,50,10);
....
...
..
.
}
}
Wie kann ich denn nun auf auf minivan zugreifen? Möchte die Werte mit System.out.... ausgeben.
Minivan muss doch noch eigentlich die Werte übergeben bekommen...
minivan(5,50,10) läuft ja nicht. Kann mir jmd weiterhelfen??[/code][/quote]
public class Kfz {
private int sitzeintern;
private int tankInhaltintern;
private float verbrauchintern;
public Kfz(int sitze, int tankInhalt, float verbrauch){ //ohne Modifizierer ist es immer private
this.sitzeintern = sitze;
this.tankInhaltintern = tankInhalt;
this.verbrauchintern = verbrauch;
}
}
Das this kannst du dir in dem Fall sparen.
Und, um auf die Variablen zugreifen zu können, solltest du sie entweder auch public machen, oder public Methoden verwenden. Sowas wird mit get und set realisiert. So etwa:
Code:
public int getSoOderSo() {
return tankInhaltintern;
}
Das [i]this[/i] kannst du dir in dem Fall sparen.
[/quote]
[i]Können kann[/i] er das, aber ich finde es persönlich sinnvoll jeden Objektzugriff zu referenzieren. So lassen sich Objektattribute und (temporäre) Methodenvariablen leichter unterscheiden. (Stichwort Codelesbarkeit)
Können kann er das, aber ich finde es persönlich sinnvoll jeden Objektzugriff zu referenzieren. So lassen sich Objektattribute und (temporäre) Methodenvariablen leichter unterscheiden. (Stichwort Codelesbarkeit)
ich will jetzt keinen flame-war herauf-beschwören, aber das die sichtbarkeit von klassenvariablen durch lokale variablen überdeckt wird ist imho ganz klar ein design-fehler! da gibts auch imho nix zu diskutieren. das ist die mutter aller unauffindbaren bugs.
da müsste eine compiler-meldung kommen wie "assignment to ambiguous variable". das was hier flame-war verursachen könnte ist die annahme daß es eine stilistische variante ist die sichtbarkeit durch ein "this." zu korrigieren.
es ist schlichtweg ein design-fehler. einer der wenigen in java, aber es ist einer.
ich will jetzt keinen flame-war herauf-beschwören, aber das die sichtbarkeit von klassenvariablen durch lokale variablen überdeckt wird ist imho ganz klar ein design-fehler! da gibts auch imho nix zu diskutieren. das ist die mutter aller unauffindbaren bugs.
da müsste eine compiler-meldung kommen wie "assignment to ambiguous variable". das was hier flame-war verursachen könnte ist die annahme daß es eine stilistische variante ist die sichtbarkeit durch ein "this." zu korrigieren.
es ist schlichtweg ein design-fehler. einer der wenigen in java, aber es ist einer.
Ok, da gebe ich Dir Recht. Aber ich zwei Argumente, die eben für das this sprechen:
Da dieser "Fehler" nun mal existiert sollte man alles tun,damit er sich nicht negativ auswirkt.
Weiterhin ist durch das "this" einfach schön zu sehen,dass diese Variable zur Klasse gehört und eben nicht als Methodenparamter oder temporäre Variable läuft.
Gerade als Anfänger passieren die oben genannten Dinge öfter und auch wenn ein andere Programmierer sich in den Code einfinden soll, sind solche kleinen Hilfsmittel, die ja auch zum Großteil durch Eclipse usw. automatisiert erstellt werden können, eine echte Erleichterung.