Конструкторы

Открыта

— Самое время рассказать тебе о конструкторах. Всё очень просто: программисты придумали сокращённую запись создания и инициализации объекта:

Без использования конструктора С использованием конструктора
MyFile file = new MyFile();
file.initialize("c:\data\a.txt");
String text = file.readText();
MyFile file = new MyFile("c:\data\a.txt");
String text = file.readText();
MyFile file = new MyFile();
file.initialize("c:\data\", "a.txt");
String text = file.readText();
MyFile file = new MyFile("c:\data\", "a.txt");
String text = file.readText();
MyFile file = new MyFile();
file.initialize("c:\data\a.txt");

MyFile file2 = new MyFile();
file2.initialize(file, "a.txt");
String text = file2.readText();
MyFile file = new MyFile("c:\data\a.txt");


MyFile file2 = new MyFile(file, "a.txt");
String text = file2.readText();

— А я только с initialize закончил разбираться…

— А ты внимательнее посмотри. Использование конструкторов удобнее и компактнее.

— Так компактнее, да. Но есть вопрос: как написать в классе метод initialize я знаю, а как внутри класса написать конструктор?

— Посмотри сначала на небольшой пример:

Без использования конструктора С использованием конструктора
class MyFile
{
  private String filename = null;

  public void initialize(String name)
  {
    this.filename = name;
  }

  public void initialize(String folder, String name)
  {
    this.filename = folder + name;
  }

  public void initialize(MyFile file, String name)
  {
    this.filename = file.getFolder() + name;
  }}
class MyFile
{
  private String filename = null;

  public MyFile(String name)
  {
    this.filename = name;
  }

  public MyFile(String folder, String name)
  {
    this.filename = folder + name;
  }

  public MyFile(MyFile file, String name)
  {
    this.filename = file.getFolder() + name;
  }}
6
Задача
Java Syntax,  5 уровень,  8 лекция
Недоступна
Набираем код
Внимание! Объявляется набор кода на JavaRush. Для этого включите режим повышенной внимательности, расслабьте пальцы, читайте код и… набирайте его в соответствующем окошке. Набор кода — вовсе не бесполезное занятие, как может показаться на первый взгляд: благодаря ему новичок привыкает к синтаксису и запоминает его (современные IDE редко дают ему это сделать).

— Объявить конструктор в классе очень легко. Конструктор — это тот же метод initialize, но с двумя отличиями:

а) Имя метода-конструктора совпадает с именем класса (вместо initialize).

б) У метода-конструктора нет типа (никакой тип не указывается вообще).

— Фактически тот же метод initialize, но с небольшими отличиями. Вроде понятно.

Комментарии (106)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий вы должны авторизоваться
Александр Медведев20 уровень, Москва
21 марта, 10:43
Верно + 1 шаг к цели ))))
Sergey7 уровень
17 марта, 13:06
+ 1 шаг к цели "Стать Java-программистом"
ildwine23 уровень
15 марта, 05:21
Alt + Insert позволяет быстро вставлять конструкторы с разным количеством параметров, геттеры и сеттеры.
Александр8 уровень
15 марта, 11:26
Благодарствую!
dan_jar6 уровень
9 марта, 14:59
я в видеокурсе один пока проходил изучил конструкторы
Roman Kocherha8 уровень
18 февраля, 15:36
Здесь куда лучше объясняться: https://javarush.ru/groups/posts/1926-zachem-nuzhnih-konstruktorih
Denis7 уровень
17 февраля, 22:08
Я не понял имя конструктора пишется с большой буквы или с маленькой как метод?
Денис11 уровень, Харьков
23 февраля, 11:56
имя конструктора должно быть идентично имени класса.
Игорь7 уровень, Москва
11 февраля, 17:18
Теперь ясно, что когда после ключевого слова new мы пишем имя класса со скобками, то на самом деле мы просто вызываем конструктор класса (С)
Boris Bashkatov8 уровень, Sumy
25 января, 00:21
В сафари половину кода не видно
Владимир Павленко22 уровень, Москва
9 февраля, 11:42
на экран не поместил, но в Хроме горизонтальный скрол есть
Денис10 уровень, Одесса
26 марта, 00:08
В таблице "С использованием конструктора" в самом низу виден ползунок
Владимир16 уровень, Москва
8 января, 16:49
Подача материала несколько удивляет. Рекомендую прочитать это перед следующими задачами.
Игорь7 уровень, Москва
11 февраля, 14:21
спасибо. Очень вовремя.
Олег19 уровень, Киев
15 декабря 2018, 11:00
подскажите, почему в скобках указан тип ссылки + имя, разве там не должно быть просто имя? первая таблица, первая колонка, 5 - я строка (на фото подчеркнуто желтым):
Илья26 уровень
20 декабря 2018, 22:01
ты прав, должно быть просто имя. чиркани админу, чтоб поправил
Дмитрий Белл9 уровень, Москва
16 января, 10:42
примеры с ошибками? )))))
Илья26 уровень
17 января, 21:33
Тут дофига чего с ошибками. Чтоб не расслаблялись, значицца...
Rolik1 уровень, Харьков
1 февраля, 16:12
Ошибки нет. Это объект переданный в параметры метода. Правда, не знаю зачем его здесь выложили. Это когда до потоков выполнения дойдете, там таких вот "ошибок" валом будет.