----------------------------------------------------
-- 3.2 Класи та спадковість.
----------------------------------------------------
-- класи не вбудовані; існують різні способи
-- зробити їх за допомогою таблиць і метаданих.
-- Пояснення для цього прикладу нижче.
Dog = {} -- 1.
function Dog:new() -- 2.
newObj = {sound = 'гав'} -- 3.
self.__index = self -- 4.
return setmetatable(newObj, self) -- 5.
end
function Dog:makeSound() -- 6.
print('я кажу ' .. self.sound)
end
mrDog = Dog:new() -- 7.
mrDog:makeSound() -- 'я кажу гав' -- 8.
----------------------------------------------------
-- спадковість приклад:
LoudDog = Dog:new() -- 1.
function LoudDog:makeSound()
s = self.sound .. ' ' -- 2.
print(s .. s .. s)
end
seymour = LoudDog:new() -- 3.
seymour:makeSound() -- 'гав гав гав ' -- 4.
-- При необхідності підкласу new() :
function LoudDog:new()
newObj = {}
-- set up newObj
self.__index = self
return setmetatable(newObj, self)
end
Немає коментарів:
Дописати коментар