Как я могу получить объект суперкласса

#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 экземпляр-A Superclass , поэтому везде, где вы можете использовать ссылку на a Superclass , вы можете использовать ссылку на a Subclass . Непонятно, что вы хотите делать.

2. Ну, вызов super(...) вообще не приводит к созданию нового объекта. Все super , что нужно, — это построить часть, которую суперкласс требует от вас построить. Ваш подкласс является суперклассом, но расширяет его: он может добавлять методы или поля.

3. но я заполняю супер(1, «первый»); суперкласс, это не его творение?

4. Да, но отдельного объекта суперкласса не существует. Существует только один объект, который одновременно является экземпляром суперкласса и подкласса.

5. @SlavaVir просто используйте subclass.getName() (убедитесь getName , что это public метод)

Ответ №1:

Похоже, что будет ответ:

 Superclass superclass = (Superclass) subclass;
 

Комментарии:

1. Вам вообще не нужно бросать.

2. если я спрошу суперкласс.getClass().getName (), у меня будет подкласс