doc: add book,internal,reference,builtins sections
This commit is contained in:
@@ -0,0 +1,46 @@
|
||||
# Классы и объекты
|
||||
|
||||
Класс описывается блоком с полями и методами:
|
||||
|
||||
```
|
||||
class Point
|
||||
{
|
||||
int x;
|
||||
int y;
|
||||
|
||||
fn move(int dx, int dy)
|
||||
{
|
||||
this.x = this.x + dx;
|
||||
this.y = this.y + dy;
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Методы обращаются к полям текущего экземпляра через обязательное имя `this`.
|
||||
|
||||
## Создание экземпляра
|
||||
|
||||
Экземпляр создаётся выражением `new ClassName`:
|
||||
|
||||
```
|
||||
Point point = new Point;
|
||||
point.x = 1;
|
||||
point.y = 2;
|
||||
point.move(9, 8);
|
||||
```
|
||||
|
||||
Объект выделяется с количеством слотов, равным числу полей класса.
|
||||
Поля читаются и изменяются через точку.
|
||||
Поддерживаются цепочки вроде `list.next.sum()`.
|
||||
|
||||
Имя класса выступает типом объекта.
|
||||
Переменная может содержать `null`, а объекты одного класса совместимы между собой.
|
||||
Сравнение == и != проверяет идентичность экземпляра, а не содержимое полей.
|
||||
|
||||
Неизвестный класс или поле приводит к ошибке компиляции.
|
||||
|
||||
---
|
||||
|
||||
Далее: [Модель памяти](./06_memory-model.md)
|
||||
|
||||
Назад: [Функции и рекурсия](./04_functions-and-recursion.md)
|
||||
Reference in New Issue
Block a user