Возвращаемый тип, необходимый для конструктора

#java

#java

Вопрос:

У меня есть этот код здесь. Я продолжаю получать сообщение об ошибке «недопустимое объявление метода; требуется возвращаемый тип»

 private class HighScoresWindow extends JWindow{
   public saveWindow(JFrame parent){
       super(parent);
       setSize(300, 200);
       setLocationRelativeTo(parent);
   }
}
 

Что я здесь делаю не так?

Комментарии:

1. Конструктор должен иметь то же имя, что и класс, поэтому, если saveWindow он не предназначен для конструктора, добавьте void возвращаемый тип. public void saveWindow(JFrame parent)

2. О да, я просто тупой. Я забыл, что конструкторы должны совместно использовать имя класса. Спасибо

Ответ №1:

Конструктор должен иметь имя класса. Если у них нет общего имени, значит, это не конструктор, а метод.

И, конечно, методу нужен возвращаемый тип (void, int, String… или что-то еще).

Итак, в вашем коде saveWindow метод не имеет того же имени, HighScoresWindow что и класс, поэтому компилятор пытается читать как метод без возвращаемого типа.

Ответ №2:

Найдите правильный способ ниже:

 private class HighScoresWindow extends JWindow{

   // constructor
   public HighScoresWindow(JFrame parent){
       super(parent);
       setSize(300, 200);
       setLocationRelativeTo(parent);
   }

   // method returns nothing i.e. void
   public void myMethod(){

   }

   // method returning a String
   public String myMethod(){
       return "Hello";
   }

}
 

Комментарии:

1. Конструктор — это специальный метод: (1) Имя совпадает с именем класса (чувствительно к регистру) (2) Без какого-либо возвращаемого типа

Ответ №3:

конструктор должен иметь то же имя, что и класс. «saveWindow» не является конструктором, а является методом

Ответ №4:

ваш метод ничего не возвращает. т.Е. Возврата нет. Если это то, что вы намереваетесь добавить void в объявление вашего метода

Комментарии:

1. public saveWindow void ?? Конечно, это должна быть опечатка

2. Да, я предполагаю, что это опечатка, но я просто тупой. Я забыл, что конструкторы должны были совместно использовать имя класса. Спасибо!