Предположим, у меня есть GrandParentClass, который наследуется ParentClass, который наследуется ChildClass.Попытка понять кастинг и динамическое связывание с точки зрения наследования
Почему я могу использовать только «цепочку», но не вниз?
Почему я могу только динамически связывать «вниз по цепочке», но не вверх?
Я ищу некоторые аргументы, которые я могу применить к этим вопросам вместо того, чтобы просто запоминать шаблон. Я действительно надеюсь, что это не просто ответ на этот вопрос.
Пример литья:
ParentClass object = new ParentClass();
System.out.println((GrandParentClass)object); //casting ChildClass throws compiler error
Пример динамического связывания:
GrandParentClass = new ChildClass(); //Switching GrandParentClass with ChildClass throws run time error.
Возможно, по той же причине не существует множественного наследства? (потому что он быстро становится неуправляемым) – donfede
Для вопроса о литье это хороший ответ: http://stackoverflow.com/questions/380813/downcasting-in-java – Shilpam