如何在扩展 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();
}
}
我想在 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();
}
}