Шукати в цьому блозі

3.2 Класи та спадковість.

----------------------------------------------------
-- 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)
end

seymour = LoudDog:new()                       -- 3.
seymour:makeSound()  -- 'гав гав гав '      -- 4.
 

-- При необхідності підкласу new() :
function LoudDog:new()
  newObj = {}
  -- set up newObj
  self.__index = self
  return setmetatable(newObj, self)
end

Немає коментарів:

Дописати коментар