首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

通过构造函数设置子类属性:不好的做法?

通过构造函数设置子类属性的不好的做法是直接在子类的构造函数中使用this关键字来设置属性。这种做法存在以下几个问题:

  1. 违反了封装原则:子类直接访问父类的属性,破坏了类的封装性,使得子类对父类的实现细节产生依赖。
  2. 代码重复:如果多个子类都需要设置相同的属性,那么每个子类都需要重复编写相同的代码来设置属性,增加了代码的冗余和维护成本。
  3. 难以维护和扩展:如果需要修改属性的设置逻辑,那么需要在每个子类中进行修改,容易出错并且耗费时间。

更好的做法是使用父类的构造函数来设置属性,然后通过子类的构造函数调用父类的构造函数来完成属性的初始化。这样可以保持类的封装性,减少代码重复,并且方便维护和扩展。

以下是一个示例代码:

代码语言:txt
复制
class Parent {
  constructor(name) {
    this.name = name;
  }
}

class Child extends Parent {
  constructor(name, age) {
    super(name); // 调用父类的构造函数来设置属性
    this.age = age;
  }
}

const child = new Child('Tom', 10);
console.log(child.name); // 输出:Tom
console.log(child.age); // 输出:10

在这个示例中,父类Parent有一个属性name,子类Child通过调用super(name)来设置name属性,并且还可以添加自己的属性age。这样就实现了通过构造函数设置子类属性的良好做法。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券