你的位置:首页 > 软件开发 > Java > javascript大神修炼记(7)——OOP思想(多态)

javascript大神修炼记(7)——OOP思想(多态)

发布时间:2015-12-21 22:00:09
读者朋友们大家好,今天我们就接着前面的内容讲,前面我们已经讲到了继承,今天我们就来讲OOP目前最后一个体现,那就是多态,因为javascript语言的灵活性,所以我们是没有办法使用接口的,所以这也给js程序带来了一定的困惑,大家也不用太着急关心这个问题,因为这些到后面ECMASc ...

javascript大神修炼记(7)——OOP思想(多态)

  读者朋友们大家好,今天我们就接着前面的内容讲,前面我们已经讲到了继承,今天我们就来讲OOP目前最后一个体现,那就是多态,因为javascript语言的灵活性,所以我们是没有办法使用接口的,所以这也给js程序带来了一定的困惑,大家也不用太着急关心这个问题,因为这些到后面ECMAScript后面的版本会给我们解决这些问题的,又扯远了,还是回到正题,OOP的多态,前面我们已经可以很明白的理解继承是什么样子的了,就是先声明一个父类,然后,我们可以写很多的子类来继承父类的属性和方法,这些我们就可以用最少的代码量,实现了与父类一样的功能,这就是继承。马上就有同学提出疑问:前面的继承我看了很久,也能有理解,但主是不知道有什么用,为什么我们要去写那么多的继承类?这个问题,立马切中要害,问得相当的关键,如果没有多态的存在,我们先前所说的继承还真没什么用,因为我们所有的继承类都是一模一样的复制,没有什么特点。举个例子:

javascript大神修炼记(7)——OOP思想(多态)

我们可以很明显地就看出问题来了,熊猫A,熊猫B与父类的熊猫完全一样,虽然,我们可以很轻松写很多个子类来,但是,这并没有什么用,我们就直接使用父类的属性和方法,就能达到我们的目的,对,这样说,感觉OOP的继承没有什么用了,前面我们才学到的知识,不会就这样浪费了吧,哈哈,不要怕,前面只要只是你所学到的东西,完全没有白学,下面我们就来讲继承的补充,多态,看示例图:

javascript大神修炼记(7)——OOP思想(多态)

不管是人类,还是其他动物,不断的繁衍,不断的进化,每一个后代看似一样,其实又不一样,或多或少都有自己的独特的属性或者行为,现在熊猫A在某种特别的情况下学会了洗澡,它有自己的卫生属性,而熊猫B是个高手,学会了泡妞(大爷的,老子都没学会,它学会了),它有了自己的魅力属性,这样我们就可以很清晰看出来,当我们需要写一个子类来继承父类的时候,它一定是具有和父类相同行为或者属性而且还一定具有自己独特的行为或者属性,这样我们就省去了相同行为或者属性的代码编写(OOP思想带来的好处再一次被体现),下面我们来看实例代码:

//遗传继承函数function Extend(Children,Parent){  for(var p in Parent){    if(typeof Children[p] == "undefined"){      Children[p] = Parent[p];    }  }}//熊猫父类function Panda(){  //颜色  this.color = "黑色交错";  //健康值  this.health = 100;  //可爱值  this.lovely = 80;  //年龄  this.age = "3岁";}//吃Panda.prototype.Eat = function(){  console.log("吃竹子");}//拉Panda.prototype.Shit = function(){  console.log("拉了一坨翔");}//睡Panda.prototype.Sleep = function(){  console.log("美美地睡了一整天");}//交配Panda.prototype.Mating = function(){  console.log("熊猫的爱爱也是为了下一代嘛");}//熊猫Afunction Panda_A(){  //讲卫生度  this.lovehealth = 60;    Extend(this,new Panda());}//洗澡Panda_A.prototype.Bath = function(){  console.log("为了不生病,就得讲卫生,我去洗澡了");  //洗一次澡,讲卫生程度 + 1  this.lovehealth += 1;}//熊猫Bfunction Panda_B(){  //魅力值  this.charm = 90;    Extend(this,new Panda());}//泡妞Panda_B.prototype.GetGirls = function(){  console.log("为了族群的繁荣,我就先去泡妞去了,谁叫我的魅力这么高呢?");  //泡一次妞,魅力值 - 1  this.charm -= 1;}

原标题:javascript大神修炼记(7)——OOP思想(多态)

关键词:JavaScript

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。