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

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?

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).

1 curtida

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