Modificador de acesso protected

6 respostas
P

Ola , gostaria de obter algumas informações a respeito do modificador de acesso “protected”…

Conforme suas caracteristicas , é dito que uma classe filha que “extender” uma classe pai , vai poder utilizar seus métodos “protecteds”…

mas entao porque se eu fizer assim tbm funciona …

public class bola {
    protected int velocidade_chute;  }
    //..................
 }


public class bola_salao {
  public static void main (String[] args) {
    bola B = new bola();
    B.velocidade_chute();
  }
}

Seria por outra caracteristica do deste modificador seria o “acesso de pacote” , que permite que classes que instanciem esta classe , tbm consigam utilizar seus atributos ???

Obrigado!

Felipe.

6 Respostas

D

O modificador protected restringe o acesso a classes do mesmo pacote e a subclasses, portanto se sua bola_salao estiver no mesmo pacote vc vai acessar normalmente

richardpeder

Pitella…

o acesso protected é o mesmo acesso que quando vc não coloca nenhum modificador…

int numero;

Você tem acesso de pacote…fora do pacote não…e dentro do pacote o acesso é full
O unico modificador que tranca tudo é o private, onde só se enxerga dentro da classe.

ate mais…

I

Na verdade colocar protected ou não colocar modificador faz diferença sim. Com protected você pode utilizar métodos em subclasses que não estão no mesmo pacote, enquanto que sem modificador é visível somente no mesmo pacote. Dessa forma a ordem do mais restrito para o menos restrito é:
private -> default -> protected -> public

Até mais.

P

Valeu pessoal , era isso mesmo que eu queria confirmar…

Abraço a todos.!!!

Bani
Na verdade é uma questão que vai um pouco além de simplesmente "pacote + subclasse". O maneira mais correta de dizer seria "pacote + herança", pois mesmo dentro da subclasse existem algumas restrições de visibilidade. Se você instancia a classe pai na classe filha e tenta acessar um membro protected dela, não funciona. Exemplo:
// Classe Pai
package pai;
public class Pai{
	protected int teste = 9;
}

// Subclasse
package filho;
import pai.Pai;
public class Filho extends Pai {
	public void teste() {
		System.out.println(teste); // OK, usa a variável herdada
		Pai p = new Pai();
		System.out.println(p.teste); // ERRO: teste has protected access in pai.Pai
	}
}
D

Só para esclarecer, o modificador default é o package, que permite acesso apenas a classes do pacote.
Portanto:

private -> package(ou default) -> protected -> public

Criado 1 de maio de 2003
Ultima resposta 1 de mai. de 2003
Respostas 6
Participantes 5