>  기사  >  웹 프론트엔드  >  상속_자바스크립트 기술과 유사한 방법을 사용하여 js에서 다형성 구현

상속_자바스크립트 기술과 유사한 방법을 사용하여 js에서 다형성 구현

WBOY
WBOY원래의
2016-05-16 16:39:091114검색

다형성은 상속과 유사한 방식으로 구현될 수 있습니다. 먼저 일부 가상 메서드를 호출하는 추상 클래스를 정의합니다. 가상 메서드는 추상 클래스에 정의되지 않지만 특정 구현 클래스를 통해 구현됩니다.

다음 예와 같습니다.

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"

먼저 추상 베이스 클래스 베이스를 정의하고, 베이스 클래스의 초기화 메소드에서 oninit 메소드를 호출하지만, oninit 메소드의 구현이나 선언은 베이스 클래스에서 사용하지 않습니다. SubClassA 및 SubClassB 클래스는 기본 클래스에서 상속되며 다양한 방식으로 oninit 메서드를 구현합니다.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.