73 lines
4.3 KiB
Plaintext
73 lines
4.3 KiB
Plaintext
\b;Инструкция \c;class\n;
|
||
Синтаксис:
|
||
\c;
|
||
\s;public class ClassName
|
||
\s;{
|
||
\s; declarations;
|
||
\s;}
|
||
\n;
|
||
Классы должны быть \l;общедоступными\u cbot\public;, таким образом они могут быть исползованы всеми ботами в любой миссии. Члены класса также должны быть общедоступными, тоесть должны быть доступны за пределами класса. Членами класса могут быть ячейки и функции (по-другому методы), например следующий класс \c;MyClass\n; содержит 4 ячейки (a, b, x и s) и один метод (MyFunction).
|
||
\c;
|
||
\s;public class MyClass
|
||
\s;{
|
||
\s; int a, b;
|
||
\s; float x = 3.33;
|
||
\s; string s = "hello";
|
||
\s; float MyFunction( float value )
|
||
\s; {
|
||
\s; return (value*x)-1;
|
||
\s; }
|
||
\s;}
|
||
\n;
|
||
ак показано в данном примере члены класса могут быть инициализированы (\c;x=3.33\n;). Вы можете также определить конструктор, который представляет собой специальный метод, имеющий то же имя, как и имя класса. Этот метод будет вызван автоматически в момент создания экземпляра класса. Вы можете также объявить более одного метода с тем же именем, но с разными параметрами.
|
||
\c;
|
||
\s;public class MyClass
|
||
\s;{
|
||
\s; int a, b;
|
||
\s; void MyClass( )
|
||
\s; {
|
||
\s; a = 2; b = 3;
|
||
\s; }
|
||
\s; void MyClass( int a, int b )
|
||
\s; {
|
||
\s; this.a = a; this.b = b;
|
||
\s; }
|
||
\s;}
|
||
\n;
|
||
В этом примере два конструктора были объявлены как \c;MyClass\n;, один без параметров и второй с двумя параметрами. Поскольку имена параметров второго конструктора такие же, как и имена двух членов \c;a\n; и \c;b\n; мы должны использовать \c;\l;this\u cbot\this;.a\n; и \c;\l;this\u cbot\this;.b\n; чтобы избежать путаницы с параметрами. Наболее простым решением было бы дать разные имена параметрам.
|
||
\c;
|
||
\s;void Test( )
|
||
\s;{
|
||
\s; MyClass item1(); // конструктор без параметров
|
||
\s; MyClass item2(4, 5); // конструктор с двумя параметрами
|
||
\s; MyClass item3; // нет вызова конструктора,
|
||
\s; // поэтому item3 == null
|
||
\s;}
|
||
\n;
|
||
Вы также можете определить деструктор. Это должна быть \c;пустая(void)\n; функция без параметров, имеющая то же имя, что и класс, но с первиксом ~. Деструктор вызывается автоматически, как только класс уже больше никому не понадобится.
|
||
\c;
|
||
\s;public class MyClass
|
||
\s;{
|
||
\s; static private int counter = 0; // инициализируем счетчик
|
||
\s; void MyClass( )
|
||
\s; {
|
||
\s; counter ++; // увеличиваем
|
||
\s; }
|
||
\s; void ~MyClass( )
|
||
\s; {
|
||
\s; counter --; // уменьшаем
|
||
\s; }
|
||
\s;}
|
||
\s;void Test()
|
||
\s;{
|
||
\s; MyClass item1( ); // счетчик = 1
|
||
\s; MyClass item2( ); // счетчик = 2
|
||
\s; item1 = null; // счетчик = 1
|
||
\s;} // счетчик = 0
|
||
\n;
|
||
If you pass a class instance as parameter to a \l;function\u cbot\function;, the function only receives a \l;reference\u cbot\pointer; to the instance. That means if you modify the instance in the function, the instance that has been passed to the function will be actuallay modified.
|
||
|
||
\t;См. также
|
||
\c;\l;Общедоступное\u cbot\public;\n;, \c;\l;приватное\u cbot\private;\n;, \c;\l;статичное\u cbot\static;\n;, \c;\l;синхронизированное\u cbot\synchro;\n;, \c;\l;новое\u cbot\new;\n;, \c;\l;ссылка\u cbot\pointer;\n;, \c;\l;это\u cbot\this;\n;
|
||
\l;Язык CBOT\u cbot; и \l;Переменные\u cbot\type; и \l;категории\u cbot\category;.
|