```
//定義一個People類
class People {
constructor(name.age);
this.name = name; //屬性
this.age = age; //屬性
eat() { //方法
alert(`${this.name} eat something`)
}
speak() { //方法
alert(`My name is ${this.name}, age ${this.age}`)
}
}
//new一個People,那么new的類也有People的方法和屬性
let zhang = new People('zhang', 20);
zhang.age;
zhang.eat();
zhang.speak();
let wang = new People('wang', 21)
wang.eat()
wang.speak()
```
```
class People {
constructor(name, age) {
this.name = name
this.age = age
}
eat() {
alert(`${this.name} eat something`)
}
speak() {
alert(`My name is ${this.name}, age ${this.age}`)
}
}
class Student extends People {
constructor(name, age, number) {
super(name, age);//繼承自父類
this.number = number //自有的屬性
}
study() {
alert(`${this.name} study`)
}
}
let xiaoming = new Student('xiaoming', 10, 'A1')
xiaoming.study()
console.log(xiaoming.number)
let xiaohong = new Student('xiaohong', 11, 'A2')
xiaohong.study()
```
* 多態
保持子類的開放性和靈活性
面向接口編程