一、TypeScript中的类
- ts中通过 class 来定义类
1、ts中定义类
class Person {// 属性,前面省略了public关键词name: string; age: number; height: number;constructor(name: string, age: number, height: number) { // 构造器函数,实例化类的时候触发的方法this.name = name;this.age = age;this.height = height;}getData(): string {return `${this.name}-${this.age}-${this.height}`;}setName(name: string): void {this.name = name;}}var p = new Person('张三', 20, 18);console.log(p.getData()); // 输出张三-20-18p.setName('李四');console.log(p.getData()); // 输出李四-20-18
2、ts中实现继承
- 主要使用extends、super这两个关键字来实现
```typescript
// 父类
class Person {
name: string;
constructor(name: string) {
} run(): string {this.name = name;
} }return `${this.name}在运动`
// 子类、extends 继承 class Web extends Person { constructor(name: string) { super(name); // 初始化父类的构造函数 } } var w = new Web(‘李四’); console.log(w.run());
<a name="8389837c"></a>
##### 3、ts中继承的探讨,父类的方法和子类的方法一致
- 子类调用方法先到子类中去找,然后再去父类中,如果都有同一方法,子类优先
```typescript
class Person {
name: string;
constructor(name: string) {
this.name = name;
}
run(): string {
return `${this.name}在运动`
}
}
class Web extends Person {
constructor(name: string) {
super(name); // 初始化父类的构造函数
}
run(): string {
return `${this.name}在运动-子类`
}
work() {
console.log(`${this.name}在工作`)
}
}
var w = new Web('李四');
console.log(w.run()); // 输出李四在运动-子类
4、类里面的修饰符
ts里面定义属性的时候给我们提供了三种修饰符
public:公有,在当前类里面、子类、类外面都可以访问 protected:保护类型,在当前类里面、子类里面可以访问,在类外部没法访问 private:私有,在当前类里面可以访问,子类、类外部都没法访问属性如果不加修饰符 默认就是公有(public) 属性如果不加修饰符默认就是公有(public)public:公有,在类里面、子类、类外面都可以访问 ```typescript class Person { public name: string; // 公有属性 constructor(name: string) {
this.name = name;} run(): string {
return `${this.name}在运动`} } class Web extends Person { constructor(name: string) {
super(name); // 初始化父类的构造函数} run(): string {
return `${this.name}在运动-子类`} work() {
console.log(`${this.name}在工作`)} } var w = new Web(‘李四’); w.work();
// 在类外部访问公有属性
class Person {
public name: string;
constructor(name: string) {
this.name = name;
}
run(): string {
return ${this.name}在运动
}
}
var p = new Person(‘哈哈哈’);
console.log(p.name); // 输出哈哈哈
- protected:保护类型,在类里面、子类里面可以访问,在类外部没法访问
```typescript
class Person {
protected name: string; // 保护类型
constructor(name: string) {
this.name = name;
}
run(): string {
return `${this.name}在运动`
}
}
var p = new Person('王五');
console.log(p.run()); // 类里面可以访问
console.log(p.name); // 在类外部没法访问保护类型的数据
- 私有,在当前类里面可以访问,子类、类外部都没法访问
class Person { private name: string; // 私有属性 constructor(name: string) { this.name = name; } run(): string { return `${this.name}在运动` } } class Web extends Person { constructor(name: string) { super(name) } work() { console.log(`${this.name}在工作`) // 私有属性在子类中无法访问 } } var p = new Person('哈哈哈'); console.log(p.name); // 在外部不能访问
