重要概念
- 类 class,即模板
-
面向对象三要素
继承 - 抽离公共代码,实现代码复用
- 封装 - 高内聚,低耦合
- 多态 - 更好的扩展性
``typescript class People { name: string age: number constructor(name: string, age: number) { this.name = name; this.age = age; } eat() { console.log(${this.name} eat some) } speak() { console.log(my name is ${this.name}, age is ${this.age}`) } }
/ 继承 /
class Student extends People {
school: string
constructor(name: string, age: number, school: string) {
super(name, age); // 交给父类去处理
this.school = school
}
study() {
console.log(${this.name} study)
}
}
/ 继承 /
class Teacher extends People {
major: string
constructor(name: string, age: number, major: string) {
super(name, age); // 交给父类去处理
this.major = major;
}
teach() {
console.log(${this.name} is teach ${this.major})
}
}
const xiaoming = new Student(‘xiaoming’, 20, ‘A’); const dahong = new Teacher(‘dahong’, 20, ‘math’);
xiaoming.age xiaoming.name xiaoming.speak() xiaoming.eat() dahong.teach() /…/
```typescript/* 可见性修饰符 */// 当前类或者子类可以调用,外部不能访问class People {/*...*/protected weight: number = 100}// 仅当前类可访问,其他都不行class People {/*...*/private gf: string = 'pw'}// 默认值是 public 所有都可访问
/*重写*/class People {eat() { console.log('eat') }}class Stu extends People {constructor() {super()}eat () { console.log('eattttt') }}/*重载*/interface IStyleInfo {[key: string]: string}class JQ {css(key: string, value: string): void// 第一个地方定义css(styleInfo: IStyleInfo): void // 第二个地方定义css(keyOrInfo: string | IStyleInfo, value?: string): void { // 语法规定,处理逻辑console.log(keyOrInfo, value)}}const j = new JQ()j.css('font-size', '15px');j.css({ 'font-size': '15px', 'color': 'red' })
细节
- 继承
super - 封装:可见性修饰符
public、protected、private - 多态:重写和重载(一个函数多参数类型)
