Переменная области видимости класса и переменная области видимости метода
Я знаю, что область видимости переменной заключена в начало блока{
и конец блока}
, Если в блоке объявлена одна и та же переменная, то ошибка компиляции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
не может быть повторно объявлено.
Почему переопределение переменной области видимости не приводит к ошибке, а переопределение переменной области метода приводит к ошибке?