面向对象

60 阅读1分钟
class User {
  constructor(firstName, lastName, age) {
    this._firstName = firstName; // 私有属性
    this._lastName = lastName; // 私有属性
    this._age = age; // 私有属性
  }

  // firstName的getter和setter
  get firstName() {
    return this._firstName;
  }
  set firstName(value) {
    if (typeof value !== 'string') {
      throw new Error('First name must be a string');
    }
    this._firstName = value;
  }

  // lastName的getter和setter
  get lastName() {
    return this._lastName;
  }
  set lastName(value) {
    if (typeof value !== 'string') {
      throw new Error('Last name must be a string');
    }
    this._lastName = value;
  }

  // age的getter和setter,包含简单的验证逻辑
  get age() {
    return this._age;
  }
  set age(value) {
    if (typeof value !== 'number' || value < 0) {
      throw new Error('Age must be a non-negative number');
    }
    this._age = value;
  }
}

// 创建User类的实例
let user = new User('John', 'Doe', 30);

// 使用getter获取属性值
console.log(user.firstName); // 输出: John
console.log(user.lastName); // 输出: Doe
console.log(user.age); // 输出: 30

// 使用setter修改属性值
user.firstName = 'Jane'; // 正确设置
user.lastName = 'Smith'; // 正确设置
try {
  user.age = -1; // 尝试设置无效的年龄,将抛出错误
} catch (error) {
  console.error(error.message); // 输出错误信息
}

// javabean 实体类
public class User {
    // 私有属性
    private String firstName;
    private String lastName;
    private int age;

    // 默认构造函数
    public User() {
    }

    // 带参数的构造函数
    public User(String firstName, String lastName, int age) {
        this.firstName = firstName;
        this.lastName = lastName;
        this.age = age;
    }

    // Getter 和 Setter 方法

    public String getFirstName() {
        return firstName;
    }

    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }

    public String getLastName() {
        return lastName;
    }

    public void setLastName(String lastName) {
        this.lastName = lastName;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        if (age >= 0) {
            this.age = age;
        } else {
            throw new IllegalArgumentException("Age cannot be negative");
        }
    }

    // 为了方便打印用户信息,可以重写toString方法
    @Override
    public String toString() {
        return "User{" +
                "firstName='" + firstName + '\'' +
                ", lastName='" + lastName + '\'' +
                ", age=" + age +
                '}';
    }
}