Javascript es6 class 类,子类修改父类的方法?

// 定义父类
class faTher {

constructor(Fname){
    this.Fname = Fname
}

fangfa1() {

alert(this.Fname)

}
fangfa12 () {

console.log(this.Fname)

}
}

// 定义子类继承父类
class Son extends faTher{

constructor(Fname, sub){
    super(Fname)
    this.sub = sub
}
fangfa2() {
    return  super.fangfa1()  // 调用父类方法   
    我怎么在子类中修改父类的方法呢 
    比如父类方法的fangfa1只是弹出了Fname,而子类我又多一个sub 属性,
    如何修改父类的fangfa1方法 让子类的sub+Fname一起弹出
}
fangfa11() {
    alert(this.Fname + this.sub);
}

}
var son1 = new Son('123', '321')
son1.fangfa2()

阅读 10k
3 个回答

让子类覆盖父类的fangfa1方法,然后想做什么就做什么

class FaTher {

    constructor(Fname){
        this.Fname = Fname
    }
    fangfa1() {
        // alert(this.Fname)
        console.log(this.Fname)
    }
    fangfa12 () {

        console.log(this.Fname)
    }
}

// 定义子类继承父类
class Son extends FaTher{

    constructor(Fname, sub){
        super(Fname)
        this.sub = sub
    }
    fangfa1() {
        super.fangfa1()  // 调用父类方法
        console.log(this.Fname + this.sub);//追加子类自已的业务
    }
    fangfa11() {
        // alert(this.Fname + this.sub);
        console.log(this.Fname + this.sub)
    }
}
var son1 = new Son('123', '321')
son1.fangfa1()

这样呢

    fangfa1(val=this.Fname) {
    
        alert(val)
    }

子类是无法修改父类的方法的哦,只能够覆盖父类的方法。
你想要警告框输出Frame和sub的话,可以在Son中重新定义一个fangfa1方法,在里面写逻辑。
代码如下:

class Son extends faTher {
  constructor(Fname, sub) {
    super(Fname);
    this.sub = sub;
  }
  // 会把父类的fangfa1方法遮盖掉
  fangfa1() {
    alert(this.Fname + this.sub);
  }
}
var son1 = new Son("123", "321");
// 这里调用的是子类的fangfa1方法而不是父类的fangfa1方法
son1.fangfa1();

希望能偶帮助到你:)

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题