zoukankan      html  css  js  c++  java
  • js中实现多态

            多态的实现能够採用和继承类似的方法。首先定义一个抽象类。当中调用一些虚方法。虚方法在抽象类中没用定义。而是通过其详细的实现类来实现。

    如以下的样例:

    Object.extend=function(destination,source){
    	for(property in source){
    		destination[property]=source[property];
    	}
    	return destination;
    }
    //定义一个抽象基类base,无构造函数
    function base(){};
    
    base.prototype={
        initialize:function(){
        	this.oninit();//调用了一个虚方法
        }
    }
    function SubClassA(){
    	//构造函数
    }
    SubClassA.prototype=Object.extend({
    	propInSubClassA:"propInSubClassA",
    	oninit:function(){
    		alert(this.propInSubClassA);
    	}
    },base.prototype);
    
    function SubClassB(){
    	//构造函数
    }
    SubClassB.prototype=Object.extend({
    	propInSubClassB:"propInSubClassB",
    	oninit:function(){
    		alert(this.propInSubClassB);
    	}
    },base.prototype);
    
    var objA=new SubClassA();
    objA.initialize();//输出"propInSubClassA"
    
    var objB=new SubClassB();
    objB.initialize();//输出"propInSubClassB"

            首先定义了一个抽象基类base,在base类的initialize方法中调用了oninit方法,可是基类中并没用oninit方法的实现或者声明。

    SubClassA和SubClassB类继承自base类,而且分别採用了不同的方式对oninit方法进行实现。

  • 相关阅读:
    从Ecma规范深入理解js中的this的指向
    js中继承的几种用法总结(apply,call,prototype)
    缓存 Array.length 是老生常谈的小优化
    spark app
    source code spark
    spark dev by IDEA
    编译spark-0.9.1
    图解GIT,ZT
    Spark分布式安装
    倒排索引(Inverted Index)
  • 原文地址:https://www.cnblogs.com/gcczhongduan/p/5222687.html
Copyright © 2011-2022 走看看