多态的实现可以采用和继承类似的方法。首先定义一个抽象类,其中调用一些虚方法,虚方法在抽象类中没用定义,而是通过其具体的实现类来实现。
如下面的例子:
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方法进行实现。
java怎么学习?java怎么入门?java在哪学?java怎么学才快?不用担心,这里为大家提供了java速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号