Vorlesung Informatik 1 - Teil A: Java Kurs
2.1 Klassen- und Instanz-Member
Variablen und Methoden (Oberbegriff: Member) können entweder zur Klasse oder zum Objekt gehören:
- Klassenvariablen und Klassenmethoden sind static deklariert:
public static void main(...){...
private static int anzahlObjekte;
Im Gegensatz zu Instanzvariablen und Methoden sind sie unabhängig von Objekten. Sie werden im Speicher angelegt, sobald die Klasse geladen wird, in der Regel sobald die Anwendung gestartet wird.
Man Referenziert Klassenmember über denKlasennamen:
JOptionPane.showMessageDialog(); // ruft eine Klassenmethode
JFrame.EXIT_ON_CLOSE oder Color.RED // Referenziert Klassenvariablen
double wurzel = Math.sqrt(10.0); // ruft eine Klassenmethode
- Instanzvariablen und Instanzmethoden erkennt man daran, dass das Schüsselwort static fehlt. Sie gehören immer zu einem Objekt. Instanzvariablen werden erst im Speicher angelegt, wenn ein Objekt mit new erzeugt wird. Sie werden immer über ein Objekt referenziert (für ein Objekt gerufen)
- Instanzmethoden können sowohl auf Instanz-Member als auch auf Klassen-Member zugreifen.
- Klassenmethoden können nur auf Klassen-Member zugreifen.
Deshalb ist die Methode starteAnwendung in StandardAnwendung statisch, weil sie von main gerufen wird. - In Klassenmethoden macht das Schlüsselwort this keinen Sinn!
Beispiel:
public class Birne{
private static int anzahlBirnen; //
Klassenvariable
private int gewicht;
// Instanzvariable
public Birne(int gewicht){
// Konstruktoren sind Instanzmethoden, this ist erlaubt
this.gewicht = gewicht;
anzahlBirnen =
anzahlBirnen+1;
}
public static int getAnzahlBirnen(){ // Klassenmethode
return anzahlBirnen;
}
main ist eine Klassenmethode, sonst müsste das Betriebssystem erst ein Objekt erzeugen, um die App zu starten.