实现继承、接口继承和可视继承
时间: 2023-06-10 15:08:28 浏览: 196
1. 实现继承(类继承):实现继承是指一个新的类可以继承现有类的属性和方法,在新的类中可以添加新的属性和方法。实现继承通过关键字 `extends` 实现。
例如:
```
class Animal {
constructor(name) {
this.name = name;
}
speak() {
console.log(this.name + ' makes a noise.');
}
}
class Dog extends Animal {
constructor(name) {
super(name);
}
speak() {
console.log(this.name + ' barks.');
}
}
let dog = new Dog('Rex');
dog.speak(); // "Rex barks."
```
在这个例子中,`Dog` 继承了 `Animal` 的 `name` 属性和 `speak()` 方法,并且在 `Dog` 类中重新定义了 `speak()` 方法。
2. 接口继承:接口继承是指一个类可以实现一个或多个接口,从而拥有接口中定义的属性和方法。接口继承通过关键字 `implements` 实现。
例如:
```
interface Animal {
name: string;
speak(): void;
}
class Dog implements Animal {
name: string;
constructor(name: string) {
this.name = name;
}
speak() {
console.log(this.name + ' barks.');
}
}
let dog = new Dog('Rex');
dog.speak(); // "Rex barks."
```
在这个例子中,`Dog` 类实现了 `Animal` 接口,并且具有接口中定义的 `name` 属性和 `speak()` 方法。
3. 可视继承:可视继承是指一个类可以继承另一个类的可视属性和方法,从而可以访问和操作这些属性和方法。可视继承通过关键字 `extends` 和 `protected` 实现。
例如:
```
class Animal {
protected name: string;
constructor(name: string) {
this.name = name;
}
protected speak() {
console.log(this.name + ' makes a noise.');
}
}
class Dog extends Animal {
constructor(name: string) {
super(name);
}
bark() {
console.log(this.name + ' barks.');
this.speak();
}
}
let dog = new Dog('Rex');
dog.bark(); // "Rex barks." "Rex makes a noise."
```
在这个例子中,`Animal` 类的 `name` 属性和 `speak()` 方法被定义为 `protected`,表示它们只能被继承类访问。`Dog` 类继承了 `Animal` 类,并且可以访问和操作 `name` 属性和 `speak()` 方法。