Diferença entre protected e friendly

6 respostas
davi1993

galera
estava estudando aqui, e parei pra pensar

Quando não definirmos nada, a classe, método ou variavel por default é friendly certo? É visível por todas as classes no pacote
E quando definirmos protected o mesmo acontece, é visível por todas as classes no pacote

qual a diferença entre os 2 entao? protected e friendly?
se puderem me ajudar…
obrigado! ;D

6 Respostas

nel

davi1993:
galera
estava estudando aqui, e parei pra pensar

Quando não definirmos nada, a classe, método ou variavel por default é friendly certo? É visível por todas as classes no pacote
E quando definirmos protected o mesmo acontece, é visível por todas as classes no pacote

qual a diferença entre os 2 entao? protected e friendly?
se puderem me ajudar…
obrigado! ;D

Simples, com protected você consegue acessar de fora do pacote, desde que a classe seja filha.
Se você disser que um método da classe X é protected, por exemplo, somente as suas classes filhas e do mesmo pacote terão acesso a esse método.

Consegui clarear as ideias?:slight_smile:
Abraços.

davi1993

uhnn

entao se for protected -> visivel para as classes dos pacotes e classes filhas
se for friendly -> visivel apenas para as classes dos pacotes e nao para as filhas

seria basicamente isso?
se for, vlww conseguiu sim xD

ViniGodoy

Sim, é isso mesmo.

davi1993

obrigado! :smiley:

ViniGodoy

Será de onde que surgiu esse nome “friendly”?

A documentação oficial sempre refere a esse tipo como “default”.

Existe no C++ um tipo de modificador chamado friend, que é bem diferente do default do java. Se uma classe A tem B como seu friend, significa que todos os métodos e atributos de B serão visíveis para A, não importando se são privados ou protected.

E

Não existe em lugar nenhum da JLS (Java Language Specification - http://java.sun.com/docs/books/jls/ ) o termo “friendly”.
(Veja o nome correto - “default” - em http://java.sun.com/docs/books/jls/third_edition/html/names.html#6.6 )

“Friendly” para mim é coisa de guerra (“friendly fire” = “fogo amigo”).

Por algum motivo, alguns gringos ( veja http://www.javarhythm.com/access-modifiers-in-java, que é um exemplo dessas gringuices ) começaram a chamar o acesso default de “friendly” mas isso é só um nome inventado para fins didáticos, mas completamente inexato.

“Friend” em C++ é, conforme disse o ViniGodoy, um conceito completamente diferente: é algo implementado em outra classe, ou algo global, que por algum motivo você dá completo acesso à implementação da sua classe. Nesse ponto, está mais para um “boyfriend” ou para uma “girlfriend”, não exatamente para um “friend” normal, porque é algo que é explicitamente citado por você na implementação da sua classe, que tem permissão de acessar as partes privadas da classe.

Criado 21 de junho de 2011
Ultima resposta 21 de jun. de 2011
Respostas 6
Participantes 4