Protected não entendo!

5 respostas
rmala_ti

Salve galera.
To com uma dúvida, que pra muitos já batida, mas não consigo entender pq o código abaixo não compila.

public class Aluno {
  protected int x;
}


class Professores{
	public static void main(String [] args){
		Aluno aluno = new Aluno();
		aluno.x;
	}

Dá o erro: Syntax error, insert "AssignmentOperator Expression" to complete Expression

Entao a dúvida é a seguinte: as duas classes estão no mesmo pacote, portanto eu deveria conseguir acessar a variável x que é protected, pois as classes são do mesmo pacote, mas não rola! :evil:
Alguem me dá uma luz!
Inté.

5 Respostas

kaique

Acho que o problema que está acontecendo é que você colocou uma expressão incompleta no seu código. O erro de compilação indica que falta aguma coisa para a expressão que você escreveu ficar sintaticamente correta. Tenta algo assim:

public class Aluno {
  protected int x;
}


class Professores{
	public static void main(String [] args){
		Aluno aluno = new Aluno();
		aluno.x = 1;
	}

[]'s.

F

Olhando assim, o único erro neste código é o fato de aluno.x não estar sendo atribuido a nada, o que gera o erro de compilação "not a statement".

Assim compila e roda:

public class Aluno {   
  protected int x;   
}   
  
class Professores{   
    public static void main(String [] args){   
        Aluno aluno = new Aluno();   
        int y = aluno.x;   
    }
Não vejo nenhum erro referente a assinatura dos métodos e dos atributos.

Abraço.

Deluxe

cara não se acessa variavel assim…
ah não ser que esteja dentro de um System.out.println ou como os cara fizeram ai em cima…
e não tem nada a ver com o protected… com qualquer modificador vai da erro assim…
att

victorwss
rmalati:
Salve galera. To com uma dúvida, que pra muitos já batida, mas não consigo entender pq o código abaixo não compila.
public class Aluno {
  protected int x;
}


class Professores{
	public static void main(String [] args){
		Aluno aluno = new Aluno();
		aluno.x;
	}

Primeira coisa: Está faltando um } para terminar a classe Professores.

Segunda coisa: "aluno.x;" não é uma instrução. Acessar um campo sem ler e nem escrever o seu valor não tem sentido, e o compilador sabe disso.
Se você colocasse "aluno.x = 5;", "aluno.x++;", "int y = aluno.x;" ou "aluno.toString();" daí faria sentido, mas "aluno.x;" não faz sentido.

rmala_ti

Agora eu entendi de verdade.
Obrigado a todos pela força.
8)

Criado 12 de maio de 2008
Ultima resposta 13 de mai. de 2008
Respostas 5
Participantes 5