У меня возникли проблемы с поиском деталей того, что происходит, когда вы возвращаете подкласс в методе типа суперкласса в Java. Например:
public class SuperClass
{
int a;
}
public class SubClass extends SuperClass
{
int b;
}
SuperClass superObj;
SubClass subObj;
private SuperClass getObject ()
{
return subObj;
}
public static void main (...)
{
superObj = getObject();
}
Что именно происходит с subObj, когда он возвращается в качестве своего суперкласса? При вводе этого примера я понимаю, что, вероятно, мог бы так же легко протестировать его сам, но мне все еще любопытно, каков именно процесс, когда это происходит, и считается ли он хорошим (если он работает, то есть) или плохой практикой .
Я спрашиваю, потому что сейчас работаю над проектом, в котором у меня есть два абстрактных базовых класса и несколько подклассов для каждого из них. Я пытаюсь найти хорошие/плохие способы справиться с необходимостью перехода от одного подкласса к другому, все еще используя полиморфизм удобства, который добавляется при использовании абстрактных базовых классов.
РЕДАКТИРОВАТЬ: я исправил основные объявления и объявления классов, извините за это.