Dúvida sobre a linguagem > usando atributos encapsulados dentro de métodos

2 respostas Resolvido
F

Boa tarde, estou iniciando meus estudos em java, mas enquanto respondia alguns exercícios me deparei com o seguinte erro:

Teste.java:15: error: illegal start of expression

private int posicao;

^

Teste.java:17: error:  expected

System.out.println(Escreva um número entre 1 e 3);

^

Teste.java:17: error: illegal start of type

System.out.println(Escreva um número entre 1 e 3);

^

Teste.java:18: error:  expected

posicao = teclado.nextInt();

^

Teste.java:20: error:  expected

System.out.println("\n\n Nome: " + nomes[posicao]);

^

Teste.java:20: error: illegal start of type

System.out.println("\n\n Nome: " + nomes[posicao]);

^

Teste.java:22: error: class, interface, or enum expected

}

^

7 errors

O código é esse:

import java.util.Scanner;
public class Teste{

Scanner teclado;
    String[] nomes = {"Neuto","Junior","Edgar"};

    public static void main(String[] args){
            Teste teste = new Teste();
            teste.imprime();
    }

    public void imprime(){
            teclado = new Scanner(System.in);
            private int posicao;

            System.out.println("Escreva um número entre 1 e 3");
            posicao = teclado.nextInt();

            System.out.println("\n\n Nome: " + nomes[posicao]);
    }

}

Pesquisei pelo problema e percebi que as declarações de atributos dentro dos métodos não são acompanhadas pelo modificador de acesso, mas não consegui achar nenhuma explicação sobre o motivo.

Um ponto que queria entender é: se declaro um método como público, todos os seus atributos são obrigatoriamente públicos também?

2 Respostas

hugokotsubo
Solucao aceita

Uma variável criada dentro de um método é local ao método (ela só existe ali dentro daquele método).

Esta variável não pertence à classe, por isso não faz sentido colocar modificadores de acesso.

Um método não tem atributos, somente classes têm. Não importa se o método é público ou privado, as variáveis locais dele não podem ser acessadas de fora. O fato do método ser público ou não só limita os pontos de onde ele pode ser chamado (se for público, qualquer um de fora consegue chamar o método, se for privado, somente a própria classe consegue, etc).

F

Entendi, obrigado pela explicação! é uma questão simples, mas me ajudou a ter uma visão mais clara de como funciona.

Criado 23 de outubro de 2020
Ultima resposta 23 de out. de 2020
Respostas 2
Participantes 2