Árvore de páginas
Ir para o final dos metadados
Ir para o início dos metadados

Abrangência
Versão 17.3.0.0 e superiores

A partir da versão 17.3.0.0 o recurso de modificador de acesso está disponível no TL++ e no ADVPL.
É necessário utilizar este include atualizado: msobject.ch
O nível do modificador padrão é PRIVATE, no ADVPL padrão essa funcionalidade também está disponível, porém o padrão é PUBLIC.


Os níveis de modificadores são:

NÍVEIS
PRIVATEO método ou a propriedade estarão acessíveis apenas de dentro da classe.
PROTECTEDO método ou a propriedade estarão acessíveis apenas de dentro da classe e das classes herdadas dela.
PUBLICO método ou a propriedade estarão acessíveis de qualquer lugar.



Exemplo
class EscopeMethod
 private data oComp1
 public data oComp2
 protected data oComp3
 data oComp4
 public method new()
 private method teste1()
 public method teste2()
 protected method teste3()
endclass
method new() class EscopeMethod
return self
method teste1() class EscopeMethod
 conout("teste1")
return self
method teste2() class EscopeMethod
 self:oComp1 := 1
 self:oComp2 := 2
 self:oComp3 := 3
 self:teste1()
 conout("teste2")
 self:teste3()
return self

method teste3() class EscopeMethod
 conout("teste3")
return self

user function escope
 local myObj := EscopeMethod():New()
 myObj:oComp2 := 2
 conout("myObj:oComp2", myObj:oComp2)
 /*myObj:oComp1 := 1 
 conout("myObj:oComp1", myObj:oComp1)*/ //não é possível descomentar esse trecho de código pois o atributo oComp1 é private e causará um erro de execução.
 /*myObj:oComp3 := 3
 conout("myObj:oComp3", myObj:oComp3)*/ //não é possível descomentar esse trecho de código pois o atributo oComp3 é protected e causará um erro de execução.
 //myObj:teste1() - não é possível descomentar esse trecho de código pois o método teste1 é private e causará um erro de execução.
 myObj:teste2()
 //myObj:teste3() - não é possível descomentar esse trecho de código pois o método teste3 é protected e causará um erro de execução.
return




  • Sem rótulos