Изучаю 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 внешнего класса не существует.
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости