wann muss eine methode static und wann nicht sein?
ich habe eine methode mit public void Methode(){
} und eine mit public static void Methode(){
}
gemacht udn bei jedem funktioniert alles, was ist also der unterschied?
2 Antworten
statische methoden sind unabhängig von instanzen. beispiel:
objekttyp katze
statische methode: gib allgemeine katzeninfos aus
nicht-statische methode: gib den namen dieser katze aus
letzteres ergibt nur auf einer instanz vom typ katze sinn.
gutes beispiel. this geht nur in instanzmethoden 🙂 in statischen methoden hast du kein objekt, das "this" sein könnte.
ja, die statische methode könnte zum beispiel unterschiedliche katzenrassen aufzählen. während die instanz einer katze den namen maunzi trägt und eine langhaarkatze ist. eine statische methode hat keinen zugang zu solchen infos. weil sie nicht auf einer konkreten katze aufgerufen wird, sondern nur auf dem objekttyp katze. die statische methode weiß also nur, was alle katzen gemeinsam haben. zum beispiel allgemeine katzeninfos, die zu jeder katze sinn ergeben.
Am Rande erwähnt, Static hat diverse Nachteile, siehe:
aber was sind allgemeine katzeninfos? meinst du sowas wie katzen haben meist fell und das würde ich bei der klasse katze gleich als STring oder so fest hinterlegen?
noch ne Frage: ich hab jetgzt mal ne klasse person erstellt mit attributen name und alter und eine eigene toString() methode, ich habe einfach system.ou.println(alter + name ) gemacht aber this.alter und this.name geht ja auch, was ist hier der unterschied?