继承普通方法
// 父类
class Father {
constructor() {
}
say() {
console.log('hello world')
}
}
// 子类
class Son extends Father{
}
// 通过子类调用父类方法
var son = new Son()
son.say()
C:\Users\lenovo\Downloads\HBuilderX\readme>cd C:\Users\lenovo\Downloads\HBuilderX\readme && C:\Users\lenovo\Downloads\HB
uilderX\plugins\node\node.exe demo.js
hello world
继承extend计算
错误示范,引出super
实例的this指向的数值,是子类传入的,限制在子类中。
而sum方法在父类中获取的是父类的实例this的值。
子传入的值,无法赋值给父类实例this
// 父类
class Father {
constructor(x,y) {
this.x = x
this.y = y
}
sum() {
console.log(this.x , this.y)
}
}
// 子类
class Son extends Father{
constructor(x,y) {
this.x = x
this.y = y
}
}
// 通过子类调用父类方法
var son = new Son()
son.sum(1,2)
super关键字-调用父类函数
调构造函数
super可以调用对象父类上的函数(包含构造函数)
// 父类
class Father {
constructor(x,y) {
this.x = x
this.y = y
}
sum() {
console.log(this.x + this.y)
}
}
// 子类
class Son extends Father{
constructor(x,y) {
super(x,y) //调用了父类的构造函数
}
}
// 通过子类调用父类方法
var son = new Son(1,2)
son.sum()
调普通函数
方法重写,就近调用
子类继承的方法重写之后,就近原则,先调用子类方法
// 父类
class Father {
constructor(x,y) {
this.x = x
this.y = y
}
say() {
console.log('father')
}
}
// 子类
class Son extends Father{
say() {
console.log('son')
}
}
// 通过子类调用父类方法
var son = new Son()
son.say()
son
子方法中调父普通函数
// 父类
class Father {
constructor(x,y) {
this.x = x
this.y = y
}
say() {
console.log('father')
}
}
// 子类
class Son extends Father{
say() {
console.log(super.say() + ' son')
}
}
// 通过子类调用父类方法
var son = new Son()
son.say()
father son
继承父类方法同时扩展子类方法
// 父类
class Father {
constructor(x,y) {
this.x = x
this.y = y
}
add() {
console.log(this.x + this.y)
}
}
// 子类继承父类加法,同时扩展减法
class Son extends Father{
constructor(x,y) {
// super调用父方法,必须在构造方法顶部调用
super(x,y)
this.x = x
this.y = y
}
substract() {
console.log(this.x - this.y)
}
}
// 通过子类调用父类方法
var son = new Son(5,3)
son.add()
son.substract()
C:\Users\lenovo\Downloads\HBuilderX\readme>cd C:\Users\lenovo\Downloads\HBuilderX\readme && C:\Users\lenovo\Downloads\HB
uilderX\plugins\node\node.exe demo.js
8
2