面向对象三要素
继承
子类继承父类
class People {
constructor(name, age) {
this.name = name;
this.age = age
}
eat() {
console.log(`${this.name} eat something`)
}
speak() {
console.log(`my name is ${this.name}, age ${this.age}`)
}
}
class Student extends People {
constructor(name, age, number) {
super(name, age)
this.number = number
}
study() {
console.log(`${this.name} study`)
}
}
const olu = new Student('olu', 3, 'A1')
olu.eat();
olu.speak();
olu.study();
封装
数据的权限和保密
- public 完全开放
- protected 对子类开放
- private 对自己开放
class People {
name
age
protected weight
constructor(name, age) {
this.name = name;
this.age = age
this.weight = 250
}
eat() {
console.log(`${this.name} eat something`)
}
speak() {
console.log(`my name is ${this.name}, age ${this.age}`)
}
}
class Student extends People {
number
private lover
constructor(name, age, number) {
super(name, age)
this.number = number
this.lover = 'olu'
}
study() {
console.log(`${this.name} study`)
}
getWeight(){
console.log(`${this.weight}`)
}
}
const olu = new Student('olu', 3, 'A1')
olu.eat();
olu.speak();
olu.getWeight();
多态
同一接口不同实现
class People {
constructor(name) {
this.name = name
}
printName() {
console.log(`my name is ${this.name}`)
}
}
class Student extends People {
constructor(name) {
super(name)
}
printName() {
console.log(`student name is ${this.name}`)
}
}
class Worker extends People {
constructor(name) {
super(name)
}
printName() {
console.log(`worker name is ${this.name}`)
}
}
const olu = new Worker('olu')
olu.printName()