\b;Anweisung \c;class\n;
Mit dieser Anweisung können Sie eine Klasse deklarieren. Benutzen Sie folgende Syntax:
\c;
\s;public class NameDerKlasse
\s;{
\s;	\n;Deklarationen\c;;
\s;}
\n;
Klassen können nur \l;public\u cbot\public; (öffentlich) definiert werden, das heißt, dass sie von allen Robotern der Mission benutzt werden können. Alle Glieder sind ebenfalls public, können also von außerhalb der Klasse benutzt werden. Glieder einer Klasse können Variablen oder Methoden (Funktionen) sein. Im folgenden Beispiel enthält die Klasse \c;MeineKlasse\n; vier Instanzvariablen (a, b, x und s) und eine Methode (MeineFunktion):
\c;
\s;public class MeineKlasse
\s;{
\s;	int     a, b;
\s;	float   x = 3.33;
\s;	string  s = "hello";
\s;	float   MeineFunktion( float value )
\s;	{
\s;		return (value*x)-1;
\s;	}
\s;}
\n;
Wie in diesem Beispiel gezeigt wird, können die Variablen einer Klasse initialisiert werden (z.B. \c;x=3.33\n;). Sie können auch einen Constructor definieren, das heißt eine Methode, die denselben Namen hat wie die Klasse. Diese Methode wird automatisch aufgerufen, wenn eine neue Instanz der Klasse erstellt wird. Sie können auch mehr als eine Methode mit demselben Namen, aber mit verschiedenen Parametern definieren:
\c;
\s;public class MeineKlasse
\s;{
\s;	int  a, b;
\s;	void MeineKlasse ( )
\s;	{
\s;		a = 2;  b = 3;
\s;	}
\s;	void MeineKlasse( int a, int b )
\s;	{
\s;		this.a = a;  this.b = b;
\s;	}
\s;}
\n;
In diesem Beispiel wurden für \c;MeineKlasse\n; zwei Constructor-Methoden deklariert, eine ohne Parameter, und eine mit zwei Parametern. Da die Namen der Parameter der zweiten Methode dieselben Namen haben wie die Namen der zwei Instanzvariablen \c;a\n; und \c;b\n;,  muss für eine Referenz auf die Instanzvariablen \c;\l;this\u cbot\this;.a\n; und \c;\l;this\u cbot\this;.b\n; geschrieben werden, um einer Verwechslung vorzubeugen. Einfacher wäre es natürlich, den Parametern andere Namen zu geben.
\c;
\s;void Test( )
\s;{
\s;	MeineKlasse item1();      // Constr. ohne Parameter
\s;	MeineKlasse item2(4, 5);  // Constr. mit 2 Parametern
\s;	MeineKlasse item3;        // kein Constr. aufgerufen,
\s;                              // deshalb item3 == null
\s;}
\n;
Sie können auch einen Destructor deklarieren. Die ist eine \c;void\n;-Funktion ohne Parameter, die denselben Namen wie die Klasse hat, der aber ein "~"-Zeichen vorangestellt wird. Dieser Destructor wird aufgerufen, sobald sich keine Variable mehr auf diese Instanz bezieht.
\c;
\s;public class MeineKlasse
\s;{
\s;	static private int counter = 0;// Zähler f. Instanzen
\s;	void  MeineKlasse( )
\s;	{
\s;		counter ++;  // eine Instanz mehr
\s;	}
\s;	void ~MeineKlasse( )
\s;	{
\s;		counter --;  // eine Instanz weniger
\s;	}
\s;}
\s;void Test()
\s;{
\s;	MeineKlasse item1( );  // counter = 1
\s;	MeineKlasse item2( );  // counter = 2
\s;	item1 = null;      // counter = 1
\s;}                      // counter = 0
\n;
Wenn Sie eine Klasseninstanz als Parameter an eine \l;Funktion\u cbot\function; übergeben, erhält die Funktion nur einen \l;Zeiger\u cbot\pointer; auf die Instanz. Wenn Sie also die der Funktion übergebene Instanz verändern, wird die Instanz selber verändert.

\t;Siehe auch
\c;\l;public\u cbot\public;\n;, \c;\l;private\u cbot\private;\n;, \c;\l;static\u cbot\static;\n;, \c;\l;synchronized\u cbot\synchro;\n;, \c;\l;new\u cbot\new;\n;, \c;\l;Zeiger\u cbot\pointer;\n; und \c;\l;this\u cbot\this;\n;.
Die \l;CBOT-Sprache\u cbot;, \l;Variablentypen\u cbot\type; und \l;Kategorien\u cbot\category;.
