Java — Возможно ли создать объект родительского класса, который может хранить экземпляр любого подкласса?

#java #class #oop #inheritance

#java #класс #ооп #наследование

Вопрос:

Я знаю, что массив родительского класса может хранить экземпляр любого его подкласса, но возможно ли это с одним объектом:

Вот пример того, что я надеюсь понять:

 public class Parent
{
    int a;
    
    public Parent(int a)
    {
        this.a = a;
    }
    
    public void function1()
    {
        //Actions
    }   
}

public class Child1 extends Parent
{
    public Child1(int a)
    {
        super(a);
    }
    
    public void function2()
    {
        //Actions
    }
}

public class Child2 extends Parent
{
    public Child2(int a)
    {
        super(a);
    }
    
    public void function3()
    {
        //Actions
    }
}
  

Теперь, если я выполню следующее:

 Parent p1;

Child1 c1 = new Child1(5)

p1 = c1;

p1.function1();

p1.function2();
  

Смогу ли я запустить function1 метод Parent класса, а также function2 метод Child1 класса с объектом Parent класса p1 ?

Извините, если это глупый вопрос. Я новичок во всем этом. Кроме того, если это дубликат, и вы пометите его как таковой, я тоже был бы признателен.

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

1. Попробуйте скомпилировать свой код.

Ответ №1:

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

Таким образом, для моего проекта я создал отдельные экземпляры каждого класса и при необходимости обращался к ним по отдельности. Это было не то решение, которое я имел в виду, но оно послужило эффективным решением моей проблемы.

PS: К комментарию, в котором указывалось, что этот код не будет работать, они правы, это не так. Это был абстрактный пример, иллюстрирующий мою проблему. Но, возможно, тогда мне не следовало форматировать его как код. Я сразу же это изменю.