如何在扩展 class 中将继承的方法设为私有

How to make an inherited method private in extended class

我想在 Typescript

中的扩展 class 之外将继承的方法设为私有

假设我有两个这样的 class:

class BaseClass{
    constructor(){}

    sayHello(){
        console.log('hello');
    }
}

class Class extends BaseClass{
    constructor(){
        super();
    }

    private sayHello(){  //I don't want to have to do this every time
        super.sayHello(); 
    }
}

let obj = new Class();
obj.sayHello();

我需要访问 'Class' 内部的方法 sayHello(),但不能从外部访问它。我不想每次继承都要覆盖它。

我认为您正在寻找 protected 访问修饰符。受保护成员可以从派生 classes 访问,但不能从 class

外部访问
class BaseClass{
    constructor(){}

    protected sayHello(){
        console.log('hello');
    }
}

class Class extends BaseClass{
    constructor(){
        super()
        this.sayHello() // ok
    }
}

let obj = new Class();
obj.sayHello(); //err

关键字 protected 使该方法只能被扩展 类 而不能被外部访问。

class BaseClass {
    constructor() { }

    protected sayHello() {
        console.log('hello');
    }
}

class Class extends BaseClass {
    constructor() {
        super();
    }

    protected sayHello() {
        super.sayHello(); 
    }
}