A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 大山哥哥 于 2017-2-28 12:12 编辑

“多态”按字面的意思就是“多种状态”,在面向对象的世界中,具体的来讲就是,同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果,
java多态
其中方法重载是多态效果之一(多个同名方法,他们的参数个数不一样)体现多态.同一个名字的方法被多次调用,由于传递的参数个数(或数据类型)不一样,导致请求的结果也不同。
php多态
继承抽象类可以体现多态,许多类都要把继承的抽象类的抽象方法给实现出来。导致的结果是不同类的对象有共同方法可以访问,访问的结果是不一样的。
工厂设计模式可以体现多态,实例化对象调用同一个方法,由于传递的参数不同,实例化的对象也不同。
javascript多态
javascript本身没有重载,更没有抽象类,(因为javascript中连类都没有),那在javascript中是怎么体现多态的?
我举一个简单的例子
[JavaScript] 纯文本查看 复制代码
function like(){
        console.log(this.name+"喜欢"+this.hobby);
}

var XZ = {name:"小泽",hobby:"拍电影"};
var CJ = {name:"苍井",hobby:"拍照片"};
like.call(XZ);
like.apply(CJ);

效果
我们首先创建一个like的方法,然后我们又分别创建了XZ 和 CJ 两个对象,我们分别用XZ 和 CJ 去操作like方法 然后输出了不同的内容,不就是 “同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果”

其中 this也是多态的一个体现 ,它代表函数运行时,自动生成的一个内部对象,只能在函数内部使用,this的值会发生变化。但是有一个总的原则,那就是this指的是,调用函数的那个对象





1 个回复

倒序浏览
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马