Цитата(Rohoss @ 10.5.2009, 20:41 ) | | Данный вопрос интерес чисто теоретически и не имеет никакой практической надобности |
Чисто теоретически, такая возможность есть в некоторых других языках. В частности в javascript предков можно менять динамически, и кстати, там как раз наследуется именно объект и куча других "странностей" присутствует. Приведу пример
| Код | <html> <head> <title>Prototype test</title> </head> <body>
<script type="text/javascript"> //Первый базовый класс function base1() { this.showMessage = function() { alert("I am base1"); } }; //Второй базовый класс function base2() { this.showMessage = function() { alert("I am base2"); } }; //Класс-потомок function child() { }; //создаём экземпляры базовых классов var b1 = new base1(); var b2 = new base2(); //Обработчик кликов кнопок function btn_click(src) { //Если нажата первая кнопка назначам для child предка b1(экземпляр base1) //в ином случае - b2(экземпляр base2) child.prototype = (src.id == "btn1") ? b1 : b2; //Создаём экземпляр класса child var test = new child(); //Вызываем метод базового класса test.showMessage(); }
</script>
<input id="btn1" type="button" value="show base1" onclick="btn_click(this);"> <input id="btn2" type="button" value="show base2" onclick="btn_click(this);"> <br> <span id="result"></span> </body> </html>
|
Здесь у меня два класса - предка(base1 и base2) и один пустой класс-потомок(child). На страничке две кнопки с одним обработчиком. В зависимости от того, какая кнопка нажата, классу child назначается (посредством экземпляров) тот или иной родитель, после чего создаётся экземпляр класса child и у него вызывается метод, определённый в обоих родителях, но по-разному. Результат можно увидеть, если запустить пример. |