Изучаю Java и столкнулся с проблемой запуска программы.
Я убрал static
из класса main
, т.к код не хотел компилироваться, а теперь выдает ошибку
main metod is not static in class MyDog
public class MyDog {
class Dog {
String name;
int size;
String breed;
void bark(){
System.out.println("Woof!");
}
}
public void main (String[] args) {
Dog ray=new Dog();
ray.size=30;
ray.bark();
}
}
public static void main(Sting[] args)
и static class Dog
У вас класс Dog
вложен в класс MyDog
. Обычно при создании экземпляра (объекта) вложенного класса этот экземпляр получает ссылку на экземпляр (объект) внешнего класса. Это нужно для того, чтобы объект вложенного класса имел доступ к переменным объекта внешнего класса. У вас в методе main
создается объект класса Dog
: Dog ray=new Dog();
, но метод main
-- статический, то есть работает без создания объекта, поэтому ссылка на объект класса MyDog
не существует. Именно об этом говорит сообщение об ошибке, которое вы привели.
С другой стороны, метод main
обязан быть статическим, поскольку это точка входа в программу, и программа должна начать работу до того, как вы сможете создать хоть какой-то объект.
Выход -- сделать статическим и вложенный класс. Статические вложенные классы не имеют связи с объектами тех классов, в которые они вложены, и поэтому ссылка на объект внешнего класса им не нужна, то есть их можно создавать в коде статических методов. Именно это и посоветовал вам Sergi.
Другое возможное решение -- описать класс Dog
не внутри класса MyDog
, а вне его. Тогда при создании объекта ссылка на объект внешнего класса будет не нужна, т. к. в таком случае для класса Dog
внешнего класса не существует.
Виртуальный выделенный сервер (VDS) становится отличным выбором
В чужом проекте столкнулся со странной работой спринга, которой не могу найти объясненияПерестало выполняться сохранение в бд, пошёл посмотреть...
В одном месте мне нужно передать строку от сервера ко всем клиентам, которые к нему подключеныЯ могу отправить строку от клиента к серверу,...
Имею простейший BorderPane с рамкой, заданной с помощью таблицы стилей css:
Динамическое тело ball должно создаваться один раз, но вместо этого происходит вот это: