Property 'balance' is private and only accessible within class 'BankAccount'. <ArkTSCheck>

这个错误提示来自于 ArkTS,意思是你正在尝试从类 BankAccount 外部访问其私有属性 balance。在面向对象编程里,私有属性被设计用来限制外部直接访问,以此遵循封装原则,提升代码安全性与可维护性。要解决这个问题,有下面几种办法:

1. 使用公共访问器方法(Getter)

如果类 BankAccount 已经定义了获取 balance 的公共访问器方法(一般命名为 getBalance),你应该通过这个方法来获取余额值,示例代码如下:

class BankAccount {
    private balance: number;
    constructor(initialBalance: number) {
        this.balance = initialBalance;
    }
    public getBalance(): number {
        return this.balance;
    }
}

// 在类外部访问
let account = new BankAccount(1000);
let currentBalance = account.getBalance();

2. 重新考虑设计需求

有时候报错意味着当前的设计不够合理。要是确实需要在多处代码里自由访问这个属性,也许把 balance 设为 protected 会更合适,protected 属性能在类自身及其子类里被访问:

class BankAccount {
    protected balance: number;
    constructor(initialBalance: number) {
        this.balance = initialBalance;
    }
}

class SavingsAccount extends BankAccount {
    // 在子类中可以访问 balance
    public addInterest() {
        this.balance *= 1.05;
    }
}

 

 

Logo

讨论HarmonyOS开发技术,专注于API与组件、DevEco Studio、测试、元服务和应用上架分发等。

更多推荐