Можно ли переопределить метод родителя и затронуть поведение дочерних классов?
Я пользуюсь библиотекой где соответственно только read-only классы, но у нее есть один метод, который работает неправильно. Я бы хотел изменить его реализацию таким образом, чтобы все объекты из этой библиотеки пользовались именно моей реализацией. Как это сделать? Мне на ум приходит только то, что нужно переопределять все методы, которые из стека по цепочке ведут к тому, который работает неправильно, но это довольно трудоемко, нет ли способа проще?
Вот пример (извиняюсь за псевдокод, писал с телефона)
class A {
doSmthWrong() {
return "wrong";
}
}
class B {
doSmth() {
A a = new A();
if
a.doSmthWrong().equals("right") {
C c = new C();
c.doSmthGood();
}
}
}
class C {
doSmthGood();
}
Если я вызову метод doSmth класса B, то метод класса C никогда не сработает. Как это исправить? Нужно создать новый класс D, наследоваться от A, переопределить в нем doSmthWrong чтобы возвращалось right, аналогично создать ещё класс и унаследовать от B, переопределив тело метода чтобы в первой строке создавался не объект A, а объект D? Или есть способ проще?