面试题答案
一键面试class Animal {
private species: string;
constructor(species: string) {
this.species = species;
}
}
class Dog extends Animal {
constructor(species: string) {
super(species);
}
getSpeciesInfo(): string {
return `This is a dog of species: ${this.species}`;
}
}
这样做能实现数据隐藏是因为species
属性被定义为private
,这意味着它只能在Animal
类内部被访问。即使Dog
类继承自Animal
类,也不能直接访问species
属性。通过在Dog
类中定义getSpeciesInfo
方法,外部代码可以间接地获取关于species
的信息,而不会直接暴露该属性。
在继承体系中访问控制规则的应用如下:
public
:公有成员可以在类内部、子类以及类的实例外部访问。private
:私有成员只能在定义它们的类内部访问,子类无法直接访问。protected
:受保护成员可以在类内部以及子类中访问,但不能在类的实例外部访问。