#java #subclass #superclass
Вопрос:
Как я могу получить объект Суперкласса, если я вызову суперконструктор из Подкласса?
class Superclass implements Serializable {
int count;
String name;
public Superclass(int count, String name) {
this.count = count;
this.name = name;
}
}
class Subclass extends Superclass implements Serializable {
public Subclass() {
super(1, "first");
}
}
что-то вроде:
Subclass subclass = new Subclass();
Superclass superclass = subclass.getClass().getSuperclass();
superclass.getName();
Комментарии:
1. Ваш
Subclass
экземпляр-ASuperclass
, поэтому везде, где вы можете использовать ссылку на aSuperclass
, вы можете использовать ссылку на aSubclass
. Непонятно, что вы хотите делать.2. Ну, вызов
super(...)
вообще не приводит к созданию нового объекта. Всеsuper
, что нужно, — это построить часть, которую суперкласс требует от вас построить. Ваш подкласс является суперклассом, но расширяет его: он может добавлять методы или поля.3. но я заполняю супер(1, «первый»); суперкласс, это не его творение?
4. Да, но отдельного объекта суперкласса не существует. Существует только один объект, который одновременно является экземпляром суперкласса и подкласса.
5. @SlavaVir просто используйте
subclass.getName()
(убедитесьgetName
, что этоpublic
метод)
Ответ №1:
Похоже, что будет ответ:
Superclass superclass = (Superclass) subclass;
Комментарии:
1. Вам вообще не нужно бросать.
2. если я спрошу суперкласс.getClass().getName (), у меня будет подкласс