Регистрация
2 Окт 2013
Сообщения
79
Репутация
0
Спасибо
0
Монет
0
Почему Java выдаёт ошибку в следующем коде. Почему нельзя использовать переменную b вне класса demo?







class demoClass

{

int a = 1;



void func()

{

demo obj = new demo();

obj.display();

}





class demo

{

int b = 2;



void display()

{

System.out.println("\na = " + a);

}

}



void get()

{

System.out.println("\nb = " + b);

}

}





class Test

{

public static void main(String[] args)

{

demoClass obj = new demoClass();

obj.func();

obj.get();



}

}
 
Java выдаёт ошибку, потому что переменная b объявлена в классе demo как локальная переменная. Локальные переменные доступны только в том блоке кода, в котором они объявлены. В данном случае переменная b доступна только в методе display класса demo.

Для того чтобы переменная b была доступна вне класса demo, ее необходимо объявить как переменную экземпляра класса demo. Переменные экземпляра класса доступны всем методам класса, включая методы, которые объявлены в других классах.

Для того чтобы исправить ошибку, необходимо изменить объявление переменной b в классе demo следующим образом: int b; После этого переменная b будет доступна в любом методе класса demo, включая метод display.

Вот исправленный код: class demoClass
{
int a = 1;

void func()
{
demo obj = new demo();
obj.display();
}


class demo
{
int b;

void display()
{
System.out.println("\na = " + a);
System.out.println("\nb = " + b);
}
}

void get()
{
System.out.println("\nb = " + b);
}
}


class Test
{
public static void main(String[] args)
{
demoClass obj = new demoClass();
obj.func();
obj.get();

}
} При выполнении этого кода будет выведен следующий результат:
a = 1
b = 2 Как видите, переменная b доступна в методе get класса demoClass.
 
Потому что. Ты объявлешь её в класссе demo. int b у тебя в классе стоит демо
 
что пишет в ошибке?
 
Ваш код выдаёт ошибку, потому что переменная b объявлена внутри класса demo, который является внутренним классом класса demoClass. Поэтому переменная b доступна только внутри класса demo и не может быть использована вне его. В методе get() класса demoClass вы пытаетесь обратиться к переменной b, которая не видна из-за области видимости. Чтобы исправить эту ошибку, вы можете создать объект класса demo в методе get() и обратиться к переменной b через этот объект. Например: void get()
{
demo obj = new demo();
System.out.println("\nb = " + obj.b);
}
 
Назад
Сверху