#java
#java
Вопрос:
Я не могу запустить этот пример, описанный в книге по подготовке OCA. Кто-нибудь может посоветовать, пожалуйста?
Я пытаюсь полностью изучить защищенный доступ к методам, но у меня возникли следующие проблемы:
pond/swan/Swan.java:[20,6] illegal start of expression
pond/swan/Swan.java:[25,9] class, interface, or enum expected
Спасибо
package pond.shore;
public class Bird {
protected String text = "floating";
protected void floatInWater() {
System.out.println(text);
}
}
//and then I created the second package herebelow:
package pond.swan;
import pond.shore.Bird;
public class Swan extends Bird{
public static void main(String[] args) {
public void swim () {
floatInWater();
System.out.println(text);
}
}
}
Комментарии:
1. да! это то, что я сделал. первый блок содержится в Bird.java файл и второй блок находятся в Swan.java
Ответ №1:
у вас не может быть двух public class
в одном файле Java.
вариант 1. вы можете либо удалить одно из public
ключевых слов из public class Swan
, либо
public class Bird
вариант 2: сохранить по одному классу для каждого файла Java. т.е. переместить любой из классов в отдельные файлы java.
Может помочь,почему в одном исходном файле Java не может быть более одного открытого класса.
Ответ №2:
В вашем коде две проблемы:
- Вам нужно поместить два класса
Bird
иSwan
в отдельные файлы. - Ваш
swim()
метод находится в вашемmain
методе, и это не сработает.
Bird.java
package pond.shore;
public class Bird {
protected String text = "floating";
protected void floatInWater() {
System.out.println(text);
}
}
Swan.java
package pond.swan;
import pond.shore.Bird;
public class Swan extends Bird {
public static void main(String[] args) {
Swan swan = new Swan();
swan.swim();
}
public void swim() {
floatInWater();
System.out.println(text);
}
}
Это приведет к:
floating
floating
Один «плавающий» происходит от Bird.floatInWater()
, а другой от Swan.floatInWater()
.
Комментарии:
1. спасибо за это! Я выбрал и вставил то же самое, но по-прежнему появляется ошибка: Ошибка: не удалось найти или загрузить основной класс com.mycompany.hello_world. Новый класс, вызванный: java.lang. Исключение ClassNotFoundException: com.mycompany.hello_world. Сбой выполнения команды NewClass.
2. @MatThew Это совершенно разные имена классов. Файлы должны быть названы как класс. Таким образом, файл, содержащий
Bird
класс, должен быть названBird.java
и т.д. Ваш класс вызываетсяNewClass
, поэтому он не работает.