O que são modificadores de acesso?
Modificadores de acesso são os tipos de visibilidade que seu atributo ou método terá para o resto da aplicação. Por exemplo, um atributo de visibilidade public poderá ter seu conteúdo modificado ou recuperado por qualquer outra classe.
Os modificadores de acesso podem ser do tipo public, private ou protected.
Tipo Public
O tipo public, como o próprio nome já diz, é publico e pode ser alterado por qualquer classe sem a utilização de um método para fazer. Exemplo:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | <?php class pessoa{ public $nome; protected $cpf; private $rg; public function __construct(){ } } $pessoa = new pessoa(); $pessoa->nome = 'Tiago Temporim'; echo $pessoa->nome; //exibirá Tiago Temporim ?> |
Tipo Protected
Os modificadores do tipo protected podem ser visualizados ou modificados pela própria classe ou suas filhas. Assim se seu atributo for do tipo protected e você tentar fazer o código acima, retornará um erro. No caso de atributos, você só conseguirá acessar se utilizar um método publico como mostrarei logo abaixo no modificador do tipo private.
Exemplo:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | <?php class pessoaFisica extends pessoa{ public function __construct(){ $pessoa = new pessoa(); $pessoaFisica->cpf = '000.000.000-00'; } } $pessoaFisica = new pessoaFisica(); $pessoaFisica->nome = 'Tiago Temporim'; echo $pessoaFisica->nome; //Exibirá Tiago Temporim; ?> |
Tipo Private
Modificadores do tipo private só podem ser visualizados e alterados pela própria classe, nem a classe filha pode acessar esse tipo de atributo ou método. Exemplo:
1 2 3 4 5 6 7 8 9 10 | <?php $pessoaFisica = new pessoaFisica(); $pessoaFisica->rg = '00.000.000-00'; //Retorna erro! $pessoa = new pessoa(); $pessoa->rg = '00.000.000-00'; //Retorna erro! ?> |
Não, eu não escrevi errado é isso mesmo. Para que você possa atribuir um valor para aquele atributo, deve ser utilizado métodos da classe. Vejamos:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | <?php class pessoa{ public $nome; protected $cpf; private $rg; public function __construct(){ } public function setRg($rg){ $this->rg = $rg; } public function getRg(){ return $this->rg; } } $pessoa = new pessoa(); $pessoa->setRg('00.000.000-00'); echo $pessoa->getRg(); //exibirá 00.000.000-00 ?> |
Agora com esses métodos implementados na classe eu posso através da classe filha utilizar eles para modificar o valor do atributo sem problemas.
Mais qual a diferença então?
É simples, dentro da classe pessoa o atributo $rg pode ser utilizado sem os métodos de acesso, enquanto na classe filha pessoaFisica não é possível realizar este feito.
Espero que eu tenha sido claro e tenha ajudado.
Caso tenham alguma dúvida, entrem no fórum, na sessão Dúvidas e criem um tópico para que eu possa ajudar o máximo possível no entendimento.
Até a próxima!


enviando...

Pingback: junichi_y