Ja. Eine Klassendefinition kann ihre eigenen Variablen (Zustand) und kann ihre eigenen Methoden (Verhalten) haben.
Hier ist noch einmal das Beispielprogramm:
class StringTester { public static void main ( String[] args ) { String str; // str ist eine Variable, die ein Objekt bezeichnet, // aber das Objekt existiert noch nicht. int laenge; // laenge ist eine primitive Variable vom Typint
// ein Objekt vom TypString
erzeugen str = new String("Zufaellige Notizen"); laenge = str.length(); // Ruft die length() Methode des Objekts auf System.out.println( "Der String ist " + laenge + " Zeichen lang"); } }
Die Methoden, die Merkmal der Klasse sind, werden statische Methoden genannt. (Die bessere Bezeichnung ist Klassenmethoden). Eine Klassenmethode ist ein Merkmal der Klasse, nicht der Objekte, die auf ihrer Basis erzeugt werden.
Wichtig:
Ein Programm kann eine Klassenmethode ausführen, ohne zuerst ein Objekt zu erzeugen!
Alle anderen Methoden (die, welche nicht static
sind) müssen ein Teil eines Objektes sein.
Ein Objekt muss existieren, bevor sie ausgeführt werden können.
Die Applikation ist vergleichbar mit vielen, die wir bis jetzt gesehen haben.
Aber jetzt können wir mehr Details verstehen, von dem was vor sich geht.
Angenommen, dass eine Datei mit dem Namen StringTester.java
den oben stehenden Quelltext enthält.
StringTester
.static void main()
genannt wird.main()
eine Klassenmethode ist, ist sie ein Merkmal der Klasse.
main()
eine Klassenmethode ist,
gibt es nur eine main()
Methode.java StringTester
eingibt.stringTester
nach der Methode main()
.
main()
Methode beginnt zu starten und erzeugt ein Stringobjekt, indem sie new
verwendet.length()
auf und sorgt dafür, dass das Zeug erledigt wird.Denkt an die Idee der objektorientierten Programmierung: Eine Applikation besteht aus einer Sammlung kooperativer Software-Objekte, deren Methoden in einer bestimmten Reihenfolge ausgeführt werden, um etwas Nützliches zu tun. Die oben genannten Schritte beschreiben wie die Sammlung der Objekte zum Laufen gebracht wird. (In diesem Fall wurde nur ein Objekt erzeugt.)
Angenommen, wir erstellen eine Datei, die eine Klassendefinition enthält,
aber die Klasse enthält keine main()
Methode.
Können die Methoden dieser Klasse jemals ausgeführt werden?