Heim >Web-Frontend >js-Tutorial >Implementieren Sie Polymorphismus in js mit Methoden, die den Fähigkeiten von inheritance_javascript ähneln

Implementieren Sie Polymorphismus in js mit Methoden, die den Fähigkeiten von inheritance_javascript ähneln

WBOY
WBOYOriginal
2016-05-16 16:39:091130Durchsuche

Polymorphismus kann auf ähnliche Weise wie Vererbung implementiert werden. Definieren Sie zunächst eine abstrakte Klasse, die einige virtuelle Methoden aufruft. Virtuelle Methoden werden nicht in der abstrakten Klasse definiert, sondern über ihre spezifische Implementierungsklasse implementiert.

Wie im folgenden Beispiel:

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"

Zuerst wird eine abstrakte Basisklassenbasis definiert und die Oninit-Methode in der Initialisierungsmethode der Basisklasse aufgerufen, die Implementierung oder Deklaration der Oninit-Methode wird jedoch nicht in der Basisklasse verwendet. Die Klassen SubClassA und SubClassB erben von der Basisklasse und implementieren die oninit-Methode auf unterschiedliche Weise.

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn