Membros protegidos

3 respostas
dariosena

Estou começando a estudar Java, e estou com uma dúvida…
Em uma apostila me deparei com o seguinte:

Para a subclasse que herda um membro protegido, ele é considerado privado, mas pode ser herdado por suas subclasses.

E estou em duvida quanto ao sentido literal dessa afirmação, veja o que entendi:

Temos a classe mãe que possui um membro protected, logo sua subclasse_um pode herdar como um membro que está privado, assim acessado apenas na subclasse_um e naum em suas
subclasses, mas as subclasses da subclasse_um podem tambem herda da classe mãe o mesmo membro sem problemas.

Por favor se estou me equivocando me ajudem. Obrigado desde já.

3 Respostas

Lavieri

Pra mim tem cara de erro de algum texto mau traduzido…

toda via… é altamente recomendado declarar todo e qualquer atributo como private, mesmo que vc precise usalo em sub-classes…

use método para acessar e modificar valores de seus atributos, e nunca uma referencia direta do atributo… se apenas suas sub-classes forem acessar o atributo, coloque o método com o modificador protected…

liberar o uso direto a atributos por herança pode gerar grandes problema…

dfsilva86

protected != private

membros protected são de nível de pacote, e só estarão acessíveis fora do pacote através da herança, e claro se a classe for visível pra quem está fora do pacote.

Exemplo:

package pacote2;

public class A {

	protected String nome;
}
package pacote1;

import pacote2.A;

public class B extends A{
	
}

O Código abaixo é perfeitamente válido, pois a variável protected está disponível a classe C por meio da Herança de B, somente é possível acessá-lo fora do pacote2 porque existe a Herança
A = SuperClasse de B que por sua vez é SuperClasse de C

package pacote1;

public class C extends B {

	public static void main(String[] args) {

		C c = new C();
		c.nome = "Nome";
	}
}

Se a classe A e C estiverem no mesmo pacote você consegue algo como:

package pacote1;

public class C {

	public static void main(String[] args) {

		A a = new A();
		a.nome = "TESTE";
		
	}
}

Mas se não estiverem e você tentar o código acima, o compilador vai reclamar na sua orelha...

Membros private são privados, ou seja, só estão acessíveis na própria classe...para que possam ser acessados externamente você deve criar métodos públicos que façam o acesso a esses membros...

Espero ter ajudado....

dariosena

Valeu ajudaram, muito…

Criado 21 de março de 2009
Ultima resposta 22 de mar. de 2009
Respostas 3
Participantes 3