Возможный дубликат:
Как работает оператор трансляции Java?
Реализация Java casting
Мне всегда интересно, как работает создание объектов в Java. Я понимаю, что для примитивного типа он будет больше похож на двоичный уровень представления, но как насчет Object? Это вроде как Polymorphism
или dynamic binding
в том, что все будет определено во время выполнения? Например:
class Parent{
void A(){}
}
class Child extends Parent{
@Override
void A(){}
}
Parent p = new Parent();
Child c = (Child) p;
Как это работает за сценой? Создает ли он новый экземпляр Child
? А также, что произойдет, если вы попытаетесь выполнить бросок:
Child b = (Child) new Object();
И последний, когда приведение примитива к классу-оболочке:
Double d = (Double) 3.3;
Я знаю, что вам не нужно его бросать, но что, если вы это сделаете? Есть ли что-то существенное, что происходит на бэкэнд?