Leitura recomendada
    
    
    
        
Objetivos
        
    
    
    
        
Declarando uma classe
    
    
        
            
                Lua ainda não suporta POO(19/06/2025) como linguagen C# e Java. Porém, assim como simulamos Enum, 
                vamos utilizar o tipo de dado table para simular orientação a objeto de forma limitada. 
            
            Sintaxe
            
[local] nome_classe = {}
            Exemplo 1
            
local MinhClasse = {}
         
     
    
    
        
            
                Nossos objetos precisam armazenar suas informações, para isso, declaramos seus campos ou 
                atributos como variáveis locais:
            
            Sintaxe
            
variavel_local.nome_atributo = <valor_inicial>
            
                Essa propriedade local deve criada dentro do construtor e retornada como uma table para 
                que tenhamos acesso:
            
            Exemplo 2 
            
local MinhaClasse = {}
MinhaClasse.construtor = function() //new
    local classe = {} 
    
    classe.MinhaPropriedade = 999 --public  
    
    return classe
end
local objeto = MinhaClasse.construtor() -- instancia
            Saída
            
-
            
                Atributos ou campos privados, devem ser declarados dentro de uma table utilizando o escopo local.  
                Esses campos devem ser acessados apenas pelas funções internas ou locais.
            
            Exemplo 3
            
MinhaClasse.construtor = function() //new
    local classe = {} 
    
    local MinhaPropriedadePrivada = 999 --  
    
    return classe
end
local objeto = MinhaClasse.construtor() -- instancia
         
     
    
    
        
            
                Atributos estáticos em algumas linguagens POO, são atributos acessados sem a necessidade 
                de uma instância ou objeto. Em Lua, a simulação é feita adicionando uma propriedade à uma 
                table como no exemplo abaixo:
            
            Exemplo 4
            
local MinhaClasse = {} --table
MinhaClasse.PropriedadeEstatica = 999
print(MinhaClasse.PropriedadeEstatica)
            Saída
            
999
         
     
    
        Histórico de atualizações
        
     
    
        
            
                - 15/09/2025 - revisão 1 - Ajustes: pontuais
 
                - 14/06/2025 - versão inicial
 
            
         
     
    
            
            
                
                    
                    Os cursos oferecidos nesta página são cursos fornecidos por parceiros. Ao comprar um curso clicando
                em seu banner, você está ajudando a manter o projeto TutorialDev vivo. Os sites dos cursos parceiros utilizam cookies.