|
|
|
Взаимодействие классов
|
|||
|---|---|---|---|
|
#18+
Есть допустим 5 классов: A1, A2, A3, A4, A5; У них всех есть один общий интерфейс. Плюс у каждого может быть (может и не быть) свой отдельный интерфейс. Хочу сделать класс-обертку (Класс Z) для них. В конструктор передается (int 1..5). В зависимости от int создается класс (A1..5). В дальнейшей работе с классом Z? я хочу видеть: 1 методы класса Z 2 общего интерфейса (классов A1..5) 3 и своих интерфейсов (если такие имеются). 1 и 2 понятно, проблема с 3 пунктом ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2012, 13:42:07 |
|
||
|
Взаимодействие классов
|
|||
|---|---|---|---|
|
#18+
Напишите внятный пример. А то на пальцах A-Z и ответ будет на пальцах - подключить генерики, ли создать насленика Z для специфичных интерфейсов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2012, 13:43:53 |
|
||
|
Взаимодействие классов
|
|||
|---|---|---|---|
|
#18+
Общий интерфейс Код: java 1. 2. 3. 4. 5. 6. 7. 8. Интерфейс для класса A1 Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. Класс A1 Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. Класс A2 Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. Класс Z общий Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. Теперь создаю класс Z передаю 1 и 2. Вызывая getA() или setA() будут вызывать в зависимости от параметра метода класса A1 или A2. Это все работает отлично. Но у класса A1 есть еще методы getB() или setB(). Вот я и хочу, когда создаю класс Z и передаю парметр были следующие методы видны: Когда передаю 1, чтоб видел методы getA(), setA(), getB() и setB(). Когда передаю 2, чтоб только методы getA() или setA(). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2012, 14:04:50 |
|
||
|
Взаимодействие классов
|
|||
|---|---|---|---|
|
#18+
-=Koba=-Вот я и хочу, когда создаю класс Z и передаю парметр были следующие методы видны: Когда передаю 1, чтоб видел методы getA(), setA(), getB() и setB(). Когда передаю 2, чтоб только методы getA() или setA(). Прикастить к нужному интерфейсу и будут "видны". Вопрос в том как именно вы их будете использовать? В методе getA должен вызывается getA или getB? Вариантов реализации масса. Проблема в том что любой предложеный вы с легкостью отметете, потому что у вас "другой случай". Поэтому нельзя ли более конкретно классы описать и их назначение Простейший вариант Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. В реальной жизни наверняка можно сделать проще. Знать бы только вашу модель. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2012, 14:15:47 |
|
||
|
Взаимодействие классов
|
|||
|---|---|---|---|
|
#18+
Blazkowicz-=Koba=-Вот я и хочу, когда создаю класс Z и передаю парметр были следующие методы видны: Когда передаю 1, чтоб видел методы getA(), setA(), getB() и setB(). Когда передаю 2, чтоб только методы getA() или setA(). Прикастить к нужному интерфейсу и будут "видны". Вопрос в том как именно вы их будете использовать? В методе getA должен вызывается getA или getB? Вариантов реализации масса. Проблема в том что любой предложеный вы с легкостью отметете, потому что у вас "другой случай". Поэтому нельзя ли более конкретно классы описать и их назначение Не если параметр 1 то это класс А1 и следовательно для Z.getA() выйдет A1.getA(), а для Z.getB() выйдет A1.getB(); для класса ж A2 только getA() ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2012, 14:25:53 |
|
||
|
Взаимодействие классов
|
|||
|---|---|---|---|
|
#18+
А как именно планируетяс использовать CommonA1 тогда? А примере он вводится, но не используется. Покажите, код, который должен его использовать, но не может, потомучто имеет только Common. Из этого будет видно как лучше. Просто генериками, или ещё от Z наследоватся. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2012, 14:29:47 |
|
||
|
Взаимодействие классов
|
|||
|---|---|---|---|
|
#18+
BlazkowiczА как именно планируетяс использовать CommonA1 тогда? А примере он вводится, но не используется. Покажите, код, который должен его использовать, но не может, потомучто имеет только Common. Из этого будет видно как лучше. Просто генериками, или ещё от Z наследоватся. Образно говоря Класс Z у меня представлен сейчас так Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. Param - это число заходящее в конструкторе. Для A1, A2 методы все видны. Только в A1 используются все, а в A2 первые два. Вот и хочу чтоб последние два не были видны Как-то так ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2012, 15:44:06 |
|
||
|
Взаимодействие классов
|
|||
|---|---|---|---|
|
#18+
-=Koba=-Образно говоря Класс Z у меня представлен сейчас так Прям в коде напишите что именно должно быть по-другому -=Koba=-Param - это число заходящее в конструкторе. Для A1, A2 методы все видны. Только в A1 используются все, а в A2 первые два. Вот и хочу чтоб последние два не были видны Как-то так Кому не видны? Почему сделано именно так а не иначе? Какая роль у класса Z? Просто делегирует вызовы? Почему A1 не расширяет A2? Без предметной области найти решение сложно. Потому что вариантов масса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2012, 15:52:59 |
|
||
|
|

start [/forum/topic.php?fid=59&gotonew=1&tid=2132855]: |
0ms |
get settings: |
16ms |
get forum list: |
26ms |
check forum access: |
7ms |
check topic access: |
7ms |
track hit: |
363ms |
get topic data: |
21ms |
get first new msg: |
12ms |
get forum data: |
5ms |
get page messages: |
74ms |
get tp. blocked users: |
2ms |
| others: | 430ms |
| total: | 963ms |

| 0 / 0 |
