Символ @ пишеться для того, чтобы в каждом новом классе переменные не дублировались.
Функция initialize обязательна для любого класса, когда вызываем ~Car.new() она выполняется. Например, если выполнить:
то получим:
Переопределение стандартных функций
Можно переопределять стандартные функции, типа to_s
Атрибуты
Для получения, например, максимальной грузоподъемности можно сделать следующим образом:
Для обращения пишем: `car1.max_way'
то же самое можно сделать другим, более правильным способом:
Изменяемые атрибуты
Теперь для изменения можно писать так: `car1.max_way = 600'
то же самое можно сделать другим способом, более правильным:
Переменная "класса"
Можно определить такую переменную, которая будет общей для всех классов данного типа:
Метод класса
В предыдущем примере можно сделать иначе, определив функцию не count, а ~Car.count, тем самым отвязав ее от c1, c2. Вызывать ее нужно так: `puts ~Car.count'
Коонтроль доступа
Существую три уровня доступа: public, protected, private. Значение такое же как и в C++. По умолчанию выбирается `public'