Переменная области видимости класса и переменная области видимости метода

Я знаю, что область видимости переменной заключена в начало блока{ и конец блока}, Если в блоке объявлена одна и та же переменная, то ошибка компиляцииVariable already defined происходит. Но взгляните на следующий пример.

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

}

Вот,x может быть повторно объявлен в методе, хотя он уже объявлен в классе. Но вif блок,x не может быть повторно объявлено.

Почему переопределение переменной области видимости не приводит к ошибке, а переопределение переменной области метода приводит к ошибке?

Ответы на вопрос(3)

Ваш ответ на вопрос