Я оказываюсь в затруднительном положении. Я строю некоторую логику поверх существующего проекта, предоставленного мне в банке. Следовательно, у меня нет возможности изменять эти классы.
Я хочу написать дополнительные методы для существующего класса, чтобы сделать его многофункциональным. Эти методы будут работать с несколькими данными экземпляра и использовать некоторые из существующих методов экземпляра.
Но поскольку класс нельзя изменить напрямую, я пишу эти дополнительные методы в его новом производном классе. Рассмотрим следующий пример.
public class Parent
{
public void existing method()
{
}
}
public class Child extends Parent
{
public void newMethod()
{
}
}
public class Other
{
public Parent foo()
{
Parent pr = new Parent();
return pr;
}
}
public class Test
{
Other o = new Other();
Parent p = o.foo;
Child c = (Child) p;
c.newMethod();
}
Когда я запускаю этот код, я получаю ClassCastException
. Я осознаю, что опускаю руки. Можно ли привести объект базового класса к объекту производного класса?
Если да, каков будет законный сценарий, в котором можно понизить уровень?
Если нет, то как следует рассматривать вышеуказанный случай? . Стоит ли менять дизайн
Ценим ваши комментарии / предложения !!!