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.
Um métodos público em Lua é uma funções anônima associada à 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.nome_metodo_publico = function()
local function nome_metodo_privado(<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