Os métodos são funções associadas aos nossos objetos para executar suas ações. Em Lua, associamos
uma função anônima à uma table para simulação.
Métodos públicos em Lua são funções anônimas associadas a uma table como mostrado na sintaxe abaixo:
Sintaxe
minha_classe = {}
minha_classe.nome_metodo = function(parametros)
--corpo
end
Um método privado, por sua vez, é uma função local definida/declarada dentro de uma table. Esse tipo
de método não pode ser acessado fora da classe.
Sintaxe
nome_classe.construtor = function()
local function nome_metodo(parametros)
--corpo
end
end
Exemplo 1: método público e privado
--classe
local MinhaClasse = {} --table
--construtor público
MinhaClasse.construtor = function()
local classe = {}
local function MetodoPrivado(valor)
print("privado param:",valor);
end
function classe.MetodoPublico(valor)
print("publico param:",valor)
print("invocando método privado via público")
MetodoPrivado(valor)
end
return classe
end
--instância
local objeto = MinhaClasse.construtor()
objeto.MetodoPublico("string")
Saída
publico param: string
invocando método privado via público
privado param: string