colobot-data/help/cbot/R/class.txt

73 lines
4.3 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

\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;.