Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Почему Java выдаёт ошибку

Ира Туманова Ученик (99), на голосовании 1 год назад
Почему 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();

}
}
Голосование за лучший ответ
okeJS Профи (645) 1 год назад
что пишет в ошибке?
Никита Демин Мыслитель (7081) 1 год назад
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.
Валек Журавлев Гуру (3312) 1 год назад
Потому что. Ты объявлешь её в класссе demo. int b у тебя в классе стоит демо
Sergio 2.1 Оракул (67319) 1 год назад
Ваш код выдаёт ошибку, потому что переменная b объявлена внутри класса demo, который является внутренним классом класса demoClass. Поэтому переменная b доступна только внутри класса demo и не может быть использована вне его. В методе get() класса demoClass вы пытаетесь обратиться к переменной b, которая не видна из-за области видимости. Чтобы исправить эту ошибку, вы можете создать объект класса demo в методе get() и обратиться к переменной b через этот объект. Например:
 void get()  
{
demo obj = new demo();
System.out.println("\nb = " + obj.b);
}
Похожие вопросы