← Каталог
Объектно-ориентированное программирование в Lua — Классы, объекты и элементы классов (свойства и методы)
Фрагмент из «Объектно-ориентированное программирование в Lua»: Классы, объекты и элементы классов (свойства и методы).
-- Пример определения класса с использованием таблицы
local Person = {}
-- Свойство класса (общее для всех экземпляров, если не переопределено)
Person.species = "Homo sapiens"
-- Метод класса
function Person:speak()
print("Привет! Я говорю.")
end
-- Создание экземпляра (объекта)
local person1 = {
name = "Алексей",
age = 30
}
-- Привязываем методы класса к объекту через метатаблицу или явное копирование
setmetatable(person1, {__index = Person})
-- Обращение к свойству через точку
print(person1.name) -- Выведет: Алексей
print(Person.species) -- Выведет: Homo sapiens
-- Вызов метода через двоеточие
person1:speak() -- Выведет: Привет! Я говорю.
-- Эквивалентно person1.speak(person1), но синтаксис удобнее -- Пример определения класса с использованием таблицы
local Person = {}
-- Свойство класса (общее для всех экземпляров, если не переопределено)
Person.species = "Homo sapiens"
-- Метод класса
function Person:speak()
print("Привет! Я говорю.")
end
-- Создание экземпляра (объекта)
local person1 = {
name = "Алексей",
age = 30
}
-- Привязываем методы класса к объекту через метатаблицу или явное копирование
setmetatable(person1, {__index = Person})
-- Обращение к свойству через точку
print(person1.name) -- Выведет: Алексей
print(Person.species) -- Выведет: Homo sapiens
-- Вызов метода через двоеточие
person1:speak() -- Выведет: Привет! Я говорю.
-- Эквивалентно person1.speak(person1), но синтаксис удобнее