1. 实例成员是为每个类的实例单独定义的,而静态成员在类的所有实例之间共享。
  2. 实例成员通过类的实例访问,而静态成员通过类本身直接访问。
    1. **bar****Foo** 类的静态成员,访问方式:**Foo.bar**
    2. **bar****Foo** 类的实例成员,访问方式:**<实例> = new Foo(); <实例>.bar**
  3. 实例方法通常用于执行与特定对象实例相关的操作,而静态方法则常用于执行与类但不与特定实例相关的操作。
  4. 在设计类时,选择使用实例成员还是静态成员取决于你想要如何使用这些成员以及它们是否应该与特定实例关联。

在面向对象编程中,类的成员可以分为两种主要类型:实例成员和静态成员。让我们详细探讨这两种成员及其之间的区别:

实例成员

  • 实例成员是与类的具体实例关联的成员。它们通常在类的构造函数中初始化,并且每个类的实例都有其自己的这些成员的副本。
  • 实例成员只能通过类的实例访问,而不能通过类本身直接访问。
  • 常见的实例成员包括:实例变量(有时称为成员变量)和实例方法。

示例(在JavaScript中使用ES6类语法):

  1. class Circle {
  2. constructor(radius) {
  3. this.radius = radius; // 实例变量
  4. }
  5. area() { // 实例方法
  6. return Math.PI * this.radius * this.radius;
  7. }
  8. }
  9. const c1 = new Circle(5);
  10. console.log(c1.area()); // 输出:78.53981633974483

静态成员

  • 静态成员与类关联,而不是与类的实例关联。因此,静态成员是在整个类中共享的,而不是在每个实例中单独存在。
  • 静态成员可以直接通过类来访问,而无需创建类的实例。
  • 常见的静态成员包括:静态变量(或称为类变量)和静态方法。

示例(在JavaScript中使用ES6类语法):

  1. class Circle {
  2. static PI = 3.14159; // 静态变量
  3. static calculateArea(radius) { // 静态方法
  4. return Circle.PI * radius * radius;
  5. }
  6. }
  7. console.log(Circle.PI); // 输出:3.14159
  8. console.log(Circle.calculateArea(5)); // 输出:78.53975