Ein Attribut/Instanz eines bestehendes Objektes mit SETTER Methode ändern

stibi

Mitglied
Guten Abend allerseits!

Dies ist mein erster Post hier - Ich habe auch zuerst Google sowie den FAQ konsultiert, komme aber leider nicht weiter. Ich hoffe hier kann mir jemand weiterhelfen...

Zwar geht es um folgende Aufgabenstellung:

Man soll eine Class Lamp erstellen. Dort einen passenden Konstruktor, bei welchem 4 Attribute (MaxVolt, MaxWatt, Name und der Preis) mitgegeben werden können. Danach soll in der Main Class mittels der Lamp Class neue Lampen-Objekte erstellt werden können. Dabei ist wichtig, dass nachträglich nur noch der Preis angepasst werden kann - die anderen drei Attribute sollen nach dem ein Objekt erstellt wurde nicht mehr änderbar sein.

Soweit klappt eigentlich alles - Referenzvariabeln in der Klasse Lamp sind private und ich habe nur getter Methoden geschrieben - ausser für den Preis natürlich. Hier mal zur Übersicht die beiden Klassen:


Klasse Lamp:

Java:
public class Lamp{

	private int maxw;
	private int maxv;
	private String name;
	private float preis;
	
	public Lamp(int maxw, int maxv, String name, float preis){
		
	this.maxw = maxw;
	this.maxv = maxv;
	this.name = name;
	this.preis = preis;	
	}

	public void setPreis(float preis){
		this.preis = preis;
	}
	
	public float getPreis(){
		return preis;
	}
	
	public String getName(){
		return name;
	}

	public int getMaxw(){
		return maxw;
	}
	
	public int getMaxv(){
		return maxv;
	}

}

Hier die Klasse Main:

Java:
class Main {
public static void main ( String [] args ) {
	
	int l01maxv;
	int l01maxw;
	String l01name;
	float l01preis;

	Lamp l01 = new Lamp(10, 12, "E2300", 230.40f);
	
	l01maxw = l01.getMaxw();
	l01maxv = l01.getMaxv();
	l01name = l01.getName();
	l01preis = l01.getPreis();
	
	System.out.println("Name der Lampe: " + l01name + ", MaxVolt: " + l01maxv + ", MaxWatt: "+ l01maxw + "Preis: " + l01preis);
	
	l01.setPreis(200.45f);
	
	System.out.println("Name der Lampe: " + l01name + ", MaxVolt: " + l01maxv + ", MaxWatt: "+ l01maxw + "Preis: " + l01preis);

 	}
}


Nun zu meine eigentlichen Problem:

Zuerst erstelle ich das Objekt l01 mit meinem Konstruktor. Danach hole ich mit den Gettern Methoden die einzelnen Attribute/Instanzen und gebe sie mit System.out.println aus. Soweit so gut. Aber wie kann ich nun den Preis (habe ja bewusst eine Setter Methode für den Preis erstellt) ändern? Und zwar den Preis des Objektes l01! So wie ich es versuche (was mir logisch scheint ???:L ) klappt das nicht. Also Objekt.Methode(Wert)...

l01.setPreis(200.45f)

Irgenwie gibt mir Jedit immer noch den alten Preis wieder wenn ich das so ausführe. Was mach ich falsch? (Btw.: Kompilieren und Ausführen funktioniert tadellos.)


Vielen Dank im Voraus & liebe Grüsse

Stibi
 
Du änderst ja auch gar nicht die lokale Variable in der main Methode!
Probiers mal mit l01.getPreis() in deinem letzten System.out 😛 Oder eben davor noch einmal ein l01preis = l01.getPreis();
 
Du änderst ja auch gar nicht die lokale Variable in der main Methode!
Probiers mal mit l01.getPreis() in deinem letzten System.out 😛 Oder eben davor noch einmal ein l01preis = l01.getPreis();

Jo genau - Ist mir aufgefallen nachdem ich den Thread erstellt hatte und den Beitrag nochmals durchgegangen bin :autsch: . Danke für die Antwort trotzdem! :toll:

Grüsse
Stibi
 

Zurück
Oben