📜  javascript 抽象类 - Javascript 代码示例

📅  最后修改于: 2022-03-11 15:03:38.708000             🧑  作者: Mango

代码示例1
//there is no way to mark a class as abstract in ES6,
//however you can force a class to behave line one by
//    - forcing derived classes to override a method
//    - causing the base class's contructor to throw an error so that it
//            is never used to create instances of the base type*
// *Be careful, as this will cause problems if you do need derived classes
//     to call super() contructor
class Foo {
 
    constructor(text){
       this._text = text;
    }
 
    /**
     * Implementation optional
     */
    genericMethod() {
        console.log('running from super class. Text: '+this._text);
    }
    
    /**
     * Implementation required
     */
    doSomething() {
       throw new Error('You have to implement the method doSomething!');
    }
 
}
 
class Bar extends Foo {
 
    constructor(text){
       super(text);
    }
 
    genericMethod() {
        console.log('running from extended class. Text: '+this._text);
    }
    
    doSomething() {
       console.log('Method implemented successfully!');
    }
    
}
 
let b = new Bar('Howdy!');
b.genericMethod(); //gonna print: running from extended class. Text: Howdy
b.doSomething(); //gonna print: Method implemented successfully!