Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Java: Общие вопросы > Dynamic binding |
Автор: ressac 4.12.2008, 01:17 |
вот прочитал, http://en.wikipedia.org/wiki/Dynamic_binding но так ничего и не понял, не поможет-ли кто наглядным примером ? |
Автор: ressac 4.12.2008, 13:36 |
ну что кто-то поможет? ![]() |
Автор: rygel 4.12.2008, 13:53 |
довольно пространный вопрос. что именно не понятно? как работает полиморфизм? при динамическом связывании выбор метод какого объекта выполнить производится во время работы приложения. Наглядный пример приведен в статье. void kill(Mortal m) { m.die(); } Методу передается параметр типа Mortal (который является интерфейсом). И на этапе компиляции невозможно узнать метод какого фактического типа необходимо вызвать... передадут ли методу объект типа Plant или Person. Ну а например если бы у нас был только класс Person объявленный как final: void kill(Person m) { m.die(); } То в даннм случае использовалось бы статическое связывание на этапе компиляции, так как точно известно что Person не расширяемый, и ссылки на объекты будут только этого типа. На русском... довольно подробно http://www.intuit.ru/department/pl/csharp/18/5.html |
Автор: ressac 5.12.2008, 20:11 |
это как в песне , "нет, ну всё понятно, но что конкретно ты имела в ввиду?" ![]() я понимаю что что есть интерфейс и два класса а где находится метод килл? в каждом из классов ? |
Автор: rygel 5.12.2008, 20:37 |
да. в каждом из классов. |
Автор: ressac 5.12.2008, 21:07 |
http://img379.imageshack.us/my.php?image=71630824hi2.jpg такая схема выходит? теперь я в ступоре ну вот Mortal human = new Person(); Mortal rose = new Flower(); rose.kill(rose); ---> смысл? |
Автор: rygel 5.12.2008, 21:26 |
сорри. не метод kill, а метод die в каждом из классом. |
Автор: ressac 5.12.2008, 21:30 |
в килл где тогда?: |
Автор: rygel 5.12.2008, 23:14 | ||||||||||
|
Автор: ressac 6.12.2008, 15:56 |
ok, thx |