package oop.Konstante_Objekte;

/*
 * In diesem Beispiel ist die Referenz person konstant, da sie mit final deklariert wurde. 
 * Du kannst jedoch den Zustand des Objekts, also den Namen, über die Methode setName() ändern. 
 * Falls du wirklich möchtest, dass sowohl die Referenz als auch der Zustand des Objekts konstant sind, 
 * musst du sicherstellen, dass alle Felder in der Klasse auch als final deklariert sind und keine mutierbaren Methoden vorhanden sind.
 * 
 */

public class Person {

	String name;

	Person(String name) {
		this.name = name;
	}

	void setName(String name) {
		this.name = name;
	}

	String getName() {
		return name;
	}
	
	public void printname() {
		System.out.println(name);
	}

	public static void main(String[] args) {
		final Person person = new Person("Alice");

		// Du kannst den Namen ändern
		person.setName("Bob");
		System.out.println(person.getName()); // Ausgabe: Bob
		
		person.printname();

		// Du kannst die Referenz nicht ändern
		// person = new Person("Charlie"); // Compiler-Fehler
	}
}


