Код IT
← Каталог

Объектно-ориентированное программирование в Lua — Классы, объекты и элементы классов (свойства и методы)

Фрагмент из «Объектно-ориентированное программирование в Lua»: Классы, объекты и элементы классов (свойства и методы).

Lua main.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), но синтаксис удобнее