You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Java类A的方法中访问类B的私有属性trainingDuration?

解决类A访问类B私有属性的问题

嘿,我来帮你捋清楚这个Java访问权限的问题~ 你遇到的核心卡点其实很明确:类B的trainingDuration是私有属性,所以类A绝对不能直接写trainingDuration来访问它,必须通过类B提供的getter方法,而且必须借助类B的实例来调用这个方法!

我给你拆解具体的解决步骤和注意事项:

1. 先给类A提供类B的实例

类A要访问类B的属性,首先得有一个类B的对象实例才行——就像你要拿别人包里的东西,得先找到这个人对吧?常见的实现方式有两种:

  • 把类B的实例作为caloryConsumption方法的参数传入
  • 在类A里持有一个类B的成员变量(比如通过构造方法注入)

2. 修正类A的代码示例

方式一:方法参数传入B的实例

class A {
    // 假设你这里有caloriesBurnedPerHour的定义,比如一个常量或成员变量
    private int caloriesBurnedPerHour = 300; // 举个实际数值的例子

    public int caloryConsumption(int minutes, B bInstance) {
        // 关键:通过B的实例调用getter,还要把String类型的duration转成int
        int trainingDuration = Integer.parseInt(bInstance.getTrainingDuration());
        return ((caloriesBurnedPerHour / 60) * trainingDuration);
    }
}

方式二:类A持有B的实例

class A {
    private int caloriesBurnedPerHour = 300;
    private B b; // 持有B的实例

    // 通过构造方法传入B的实例
    public A(B b) {
        this.b = b;
    }

    public int caloryConsumption(int minutes) {
        int trainingDuration = Integer.parseInt(b.getTrainingDuration());
        return ((caloriesBurnedPerHour / 60) * trainingDuration);
    }
}

3. 容易踩的两个坑

  • 类型转换问题:你提到trainingDuration是String类型,但计算卡路里需要数值类型(int/double),所以必须用Integer.parseInt()(或者Double.parseDouble())转成数值,不然会编译报错!
  • getter方法名要正确:确保你的getter方法是标准的驼峰命名——属性是trainingDuration,getter就应该是getTrainingDuration(),别拼写错(比如你提到的getTraini...这种不完整的名字肯定会报错)。

总结一下:只要拿到类B的实例,调用正确的getter方法,再处理好String到数值的转换,就能顺利访问到trainingDuration的值啦!

内容的提问来源于stack exchange,提问作者dbljn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:26:55