如何在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
相关产品推荐
相关产品推荐

