Страницы

Поиск по вопросам

четверг, 28 марта 2019 г.

Не выполняется конструктор

Файл CleanBackupFolders.java:
import java.io.*;
public class CleanBackupFolders { public static void main(String[] args) throws IOException { ... Settings IniFileObj = new Settings(); ... } }
Файл Settings.java:
public class Settings { public void Settings() { System.out.println("Constructor executed!"); } }
В первом классе не выполняется вызов конструктора для объекта. Если же после поставить строку
IniFileObj.Settings();
то все, что в этом конструкторе, исполняется. В чем проблема?


Ответ

В вашем коде несколько проблем:
Вы не создали конструктор. Вы создали метод с именем как у конструктора, но дали ему возвращаемое значение, а конструктор оного не имеет. Методы в Яве и (переменные тоже) принято именовать с маленькой буквы. Как раз из-за этого вы и ошиблись - конструктор от остальных методов отличается не только отсутствием возвращаемого значения, но и тем, что имя его начинается с большой буквы (точнее - полностью совпадает с именем класса).
Т.е. на самом деле вы вызываете сначала конструктор по умолчанию, который создаётся автоматически, если вы не создали к.-л. другой конструктор. После этого вы вызываете созданный вами обычный метод. Причём т.к. переменную вы создали не по правилам именования, т.е. с большой буквы, на первый взгляд ваш метод вообще выглядит статическим.

Мораль:
Если бы вы уважали конвенции именования, то ошибки бы у вас не возникло.

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

Отправить комментарий