Как исправить ошибку «незаконный запуск expressionMissing javadoc»

#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:

В вашем коде две проблемы:

  1. Вам нужно поместить два класса Bird и Swan в отдельные файлы.
  2. Ваш 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 , поэтому он не работает.