Zmienna zakresu klasy vs zmienna zakresu metody

Wiem, że zakres zmiennej jest zamknięty przez początek bloku{ i koniec bloku}. Jeśli ta sama zmienna jest zadeklarowana w bloku, to błąd kompilacjiVariable already defined występuje. Ale spójrz na następujący przykład.

public class Test{
int x=0;// Class scope variable

public void m(){
  int  x=9;   //redeclaration of x is valid within the scope of same x. 

  if(true){
      int x=7; // but this redeclaration generates a compile time error.
  }

}

Tutaj,x można redeclared w metodzie, chociaż jest już zadeklarowana w klasie. Ale wif blok,x nie można ponownie zarejestrować.

Dlaczego redeclaracja zmiennej zakresu klasy nie generuje błędu, ale redeclaracja zmiennej zakresu metody generuje błąd?

questionAnswers(3)

yourAnswerToTheQuestion