标签:
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>Document</title> 6 7 </head> 8 <script> 9 /*多态的基本概念:一个引用类型(变量)在不同情况下的多种状态。 10 js本身是无态的,天生就支持多态。*/ 11 12 //Master类 13 function Master(name){ 14 this.name=name; 15 //方法[给动物喂食物] 16 } 17 //原型法添加成员函数 18 Master.prototype.feed=function(animal,food){ 19 window.alert("给"+animal.name+"喂"+food.name); 20 } 21 //食物类 22 function Food(name){ 23 this.name=name; 24 } 25 //鱼 26 function Fish(name){ 27 this.food=Food; 28 this.food(name); 29 } 30 //骨头 31 function Bone(name){ 32 this.food=Food; 33 this.food(name); 34 } 35 36 37 //动物类 38 function Animal(name){ 39 this.name=name; 40 } 41 //猫猫 42 function Cat(name){ 43 this.animal=Animal; 44 this.animal(name); 45 } 46 //狗狗 47 function Dog(name){ 48 this.animal=Animal; 49 this.animal(name); 50 } 51 var cat=new Cat("大花猫"); 52 var fish=new Fish("黄花鱼"); 53 var dog=new Dog("大花狗"); 54 var bone=new Bone("猪骨头"); 55 //创建一个主人 56 var master=new Master(); 57 master.feed(cat,fish); 58 master.feed(dog,bone); 59 60 </script> 61 </html> 62 </script> 63 </body> 64 </html>
多态有利于代码的维护和扩展,这里我们可以考虑,如果食物加入桃子,动物加入猴子,可以看到Master的feed函数不需要变化。
多态用途在于做面向对象开发时,需要有一个方法不变,但是它接收的参数类型是变化的,就可以使用多态。
标签:
原文地址:http://www.cnblogs.com/hezhi/p/4578763.html