public Rectangle( int top){
}
public Rectangle(int left, int top){
}
public Rectangle(int left, int width, int height){
}
public Rectangle(int left, int top, int width, int height){
}
public static void main(String[] args) {
}
}
София
11 уровень
Мне немного непонятно. В почему в первой строке можно инициализировать только высоту, и задача проходит, хотя там сперва просят задать 4 параметра.
Решен
Комментарии (3)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Justinian Judge в Mega City One Master
29 декабря 2019, 22:42решение
Перечитал условия, не увидел в них "хотя там сперва просят задать 4 параметра.".
Класс может содержать много конструкторов.
Порядок объявления (месторасположение относительно друг к другу) методов и конструкторов не важен. Там нету первых и последних, они все для компьютера находятся равнозначно по приоритету.
Поэтому мы можем написать вначале с 4 параметрами, в конце, компьютер даже разницы не заметит.
Но для переменных другая история. Поскольку они могут ссылаться друг на друга, то там есть значение, кто выше в коде, кто ниже. Вернее, может быть разница.
в этом случае разницы нету.
А вот в этом:
разница будет, поскольку переменная ссылается на другую переменную, а значит она должна быть выше - объявлена раньше.
+3
София
30 декабря 2019, 15:46
Можно выходит дважды написать так:
public Rectangle(int left, int top, int width, int height){ }
public Rectangle(int left, int top, int width, int height){ }
И ошибки не будет?
0
Justinian Judge в Mega City One Master
31 декабря 2019, 03:50
Нет, ошибка будет.
Суть в чем, класс содержит объявление методов/конструкторов.
Порядок их объявления не важен, поскольку программа не начнет работать, пока не загрузит их ВСЕ в память.
Поэтому хоть первый, хоть последний, любой порядок, все-равно они загружаются в память, и потом будут вызываться только тогда когда мы их явно будем вызывать с кода. Захотим вызовем метод/конструктор, захотим - не вызовем.
На чем бы такой пример привести.
Ну вот допустим у меня родилась тройня.
Каждый малыш это метод/конструктор.
Есть разница, в какой последовательности мы с женой дадим им имена? Вот этого первым назовем Андрей, или другого Антоном? Я полагаю что нет.
В ЗАГСе можно зарегистрировать в любой последовательности, хотя последовательность обязательно то ведь будет, поскольку будут выдаваться свидетельства государственного образца, будут записи в журнал регистрации актов и тд, фактически, для государства это будет последовательные операции в определенном порядке.
Но по сути разницы нет, пусть хоть формально вроде и есть порядок регистрации, но на практике что будет.
Я говорю "эй, Андрей", бежит, ползет Андрей. Говорю "Эй, Антон" ползет другой. Говорю "Эй, Маша", идет Маша.
Так и методы/конструкторы, так уж сложилось что их нужно как-то записать в класс. А в классе, есть начало класса и конец, и поэтому визуально нам кажется, что один метод находится после другого. Но это чисто формальность. Все-равно все сведется к тому, какой мы метод будем вызывать, тот и вызовется. Сам по себе он не вызовется :)
А вот так:
нельзя.
Снова-таки, если брать пример, навряд ли близняшек-мальчиков назовут Андрей и Андрей :)
Если звать Андрея, кто должен прийти? :)
Так и джава, она должен четко понимать, какой метод/конструктор вызвать, а для этого они должны отличаться между собой хоть чем-то существенным. +5