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