2016-05-30 3 views
0

У меня есть отношение родительского и классового отношения к наследству. Класс child имеет параметризованный конструктор. При запуске родительского класса в дочерний класс будет вызываться дочерний конструктор?вызов конструктора java downcasting?

+0

в том месте, где вы его сбрасываете, экземпляр объекта должен уже существовать и дочерний конструктор уже вызывается. Поэтому я не понимаю этот вопрос. – SomeJavaGuy

+0

Не знаю. Если я понимаю вопрос, но, я думаю, вы спрашиваете о том, как применить элемент к параметризуемому типу. да, вы можете: ArrayList arr = новый ArrayList <>(); Объект obj = (объект) arr; ArrayList arr2 = (ArrayList ) arr; –

+0

Я имею в виду, что существует какая-то логика подкласса-конструктора, который должен назначать данные одному из своих параметров. потому что я не вызываю конструктор подкласса и просто понижаю его ... Будет ли логика, присутствующая в боковой дочерней конструкции класса, выполнить или нет? –

ответ

1

No. Кастинг не зависит от конструкции. Конструктор класса X возвращает экземпляр класса X. Если у вас есть

class X { ... } 
class Y extends X { ... } 
X my_x = new X(); 
Y my_y = (Y) my_x; <=== ClassCastExceptoin 

Это вызовет исключение. Следующие действия будут работать:

class X { ... } 
class Y extends X { ... } 
X my_x = new Y();  // Note subclass constructor call 
Y my_y = (Y) my_x; // my_x really referred to a Y instance, so this is OK 
+0

Итак, если есть некоторые параметры, которые назначаются через конструктор, не будут назначены с помощью downcasting? –