Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Java: Общие вопросы > Две ситуации на знание ООП |
Автор: Entry_N3 30.6.2007, 16:16 |
Исходная ситуация 1: Есть класс A, в одном из public-методов которого используется объект класса Б, точнее ссылка типа интерфейса, который реализует класс Б. Класс Б имеет 2 protected-конструктора. Мне нужно переопределить у класса Б один public-метод. Для этого я создаю класс ББ, унаследовав от класса Б и переопределяю нужный метод. Нужно в public-методе класса А подсунуть вместо объекта Б, свой объект ББ. При этом понятно, что просто присвоить нельзя ББ бб = (ББ) б, т.к. это ClassCastException. Вопрос: Можно ли создать объект ББ, идентичный по состоянию объекту Б? Если да, то как скопировать состояние Б? Вообще, разумно так действовать? Исходная ситуация 2: Есть jarник, отвечающий за определенную логику. Из javadoc-ов я узнаю, что в нем есть класс, метод которого я хочу переопределить. Я наследуюсь, переопределяюсь. Вопрос: Какие есть способы заставить использовать объект наследника? |
Автор: LSD 30.6.2007, 17:37 | ||
Не понял вопрос, приваивание Б б = бб; сработает нормально. В чем трудность? Второй вопрос тоже не понял. Может привести примеры кода: что есть и что требуется сделать. |
Автор: Entry_N3 30.6.2007, 19:41 | ||
Есть объект б, мне нужно подсунуть объект бб, который порожден от наследника класс Б. Трудность - как создать объект бб так, чтобы он копировал состояние объект б? (Все это для того, чтобы метод переопределить) |
Автор: Entry_N3 30.6.2007, 19:56 | ||||||
![]() Например, так:
Тогда в public-методе класса А:
Это паттерн Wrapper? |
Автор: powerOn 30.6.2007, 21:07 |
угу, похоже. скорее декоратор. |
Автор: Entry_N3 1.7.2007, 09:19 | ||
Уточняю немного наивный второй вопрос. Есть приложение, которое использует на jar-библиотеке. Исходников нет. Переопределяем реализацию опр. метода. опр. класса из этого jarника. Размещаем jarник в WEB-INF\lib, класс-наследник в WEB-INF\classes. Может ли контейнер "увидеть", что есть класс-наследник, и "автоматически" использовать его, вместо родителя (без прописывания соответствующих дескрипторов)? ![]() В ООП есть что-то подобное? |
Автор: LSD 1.7.2007, 09:28 |
Насчет второго вопроса: честных - никаких. Обходной использовать рефлексию и присвоить полю класса своего наследника вместо оригинала. |