Здравствуйте, eiNtiel, Вы писали:
N>Вот это: "Любой класс имел бы конструктор без параметров, т.к. он наследуется от класса Object" аргумет.
Этот аргумент в общем случае неверен, выше написал почему.
Здравствуйте, dshe, Вы писали:
D>Я скажу дикую вешь, но вообще-то конструкторы наследуются. Вы ведь можете вызвать из конструктора наследника конструктор базового класса (более того, просто обязаны это сделать). Но это я просто придираюсь к словам.
Не обязаны, с чего это вы взяли?
D>К сожалению, на мой взгляд нет пока элегантного способа внести эту фичу в язык. Кроме того, без нее обычно можно обойтись.
Согласен с COs-ом, проблема здесь скорее всего в дизайне: кто-то злоупотребляет наследованием.
Здравствуйте, eiNtiel, Вы писали:
C0s>>с этого момента могла бы начаться, пожалуй, более интересная дискуссия на тему дизайна: откуда взялось столько потомков и проч...
N>а "архитектура" такая родилась всвязи с этим
ok, переходим туда, я там уже черкнул вариант дизайна, не требующий абстракций и потомков
вообще, конечно же, тебе следует подтянуть паттерны ООД. я имею в виду, не только практикой по этой задаче, но и в теории
Здравствуйте, rsn81, Вы писали:
R>Здравствуйте, dshe, Вы писали:
D>>Я скажу дикую вешь, но вообще-то конструкторы наследуются. Вы ведь можете вызвать из конструктора наследника конструктор базового класса (более того, просто обязаны это сделать). R>Не обязаны, с чего это вы взяли?
Неявный вызов конструктора базового класса без параметров за вызов считается. Также за вызов считается опосредованный вызов конструктора базового класса через свой конструктор. Так или иначе, хотя бы какой-то конструктор базового класса вызвать придется. Конструктор класса java.lang.Object, который не вызывает никакой другой конструктор, — это исключение.
8.8.7 Constructor Body
The first statement of a constructor body may be an explicit invocation of another constructor of the same class or of the direct superclass (§8.8.7.1).
It is a compile-time error for a constructor to directly or indirectly invoke itself through a series of one or more explicit constructor invocations involving this. If the constructor is a constructor for an enum type (§8.9), it is a compile-time error for it to invoke the superclass constructor explicitly.
If a constructor body does not begin with an explicit constructor invocation and the constructor being declared is not part of the primordial class Object, then the constructor body is implicitly assumed by the compiler to begin with a superclass constructor invocation "super();", an invocation of the constructor of its direct superclass that takes no arguments.
Здравствуйте, C0s, Вы писали:
C0s>вообще, конечно же, тебе следует подтянуть паттерны ООД. я имею в виду, не только практикой по этой задаче, но и в теории
писал ну чуть ли не слово в слово тоже самое. К чему раздувать тему объясняя друг другу то, что оба итак знают, а?
D>Неявный вызов конструктора базового класса без параметров за вызов считается. Также за вызов считается опосредованный вызов конструктора базового класса через свой конструктор. Так или иначе, хотя бы какой-то конструктор базового класса вызвать придется.
Именно, что вызов неявный — его генерирует компилятор; вызывать умолчальный конструктор базового класса вручную никто не обязан. К обязательному вызову принуждает только абстрактный родительский класс с частным конструктором без умолчального.
D>Конструктор класса java.lang.Object, который не вызывает никакой другой конструктор, — это исключение.
А вот это интересно... думал, конструктор Object вызывается всегда.
Здравствуйте, rsn81, Вы писали:
D>>Неявный вызов конструктора базового класса без параметров за вызов считается. Также за вызов считается опосредованный вызов конструктора базового класса через свой конструктор. Так или иначе, хотя бы какой-то конструктор базового класса вызвать придется. R>Именно, что вызов неявный — его генерирует компилятор; вызывать умолчальный конструктор базового класса вручную никто не обязан. К обязательному вызову принуждает только абстрактный родительский класс с частным конструктором без умолчального.
Мы разошлись в понимании "обязательный вызов конструктора". Неявный вызов я также отнес к обязательному.
D>>Конструктор класса java.lang.Object, который не вызывает никакой другой конструктор, — это исключение. R>А вот это интересно... думал, конструктор Object вызывается всегда.