所以,我在一个名为Lotion的类中创建了一个方法,并将其命名为read(),此方法采用用户的输入。我的讲师告诉我,方法read()必须是私有的。但是,他说他的demo / tester类应该能够访问方法read()。他给了我们一个提示,说我们必须使用构造函数。但不幸的是,我仍然不明白它应该如何运作。有人可以解释一下。
提前致谢。
答案 0 :(得分:3)
您当前的代码(在评论中发布)
private void read() {
System.out.println(
"Enter the amount of liquid in the bottle (0-100): ");
volume = keyboard.nextDouble();
if (volume > MAX || volume < MIN) { read(); } }
}
这会通过设置volume
来初始化您的对象。
您可以从类构造函数中调用它:
public Lotion(){
read();
}
这样,当您创建实例时,它会自动询问用户输入并设置实例字段的答案。
一些设计说明(但不要与导师争论):
read
可以返回double
,而不是直接更新对象状态。 答案 1 :(得分:2)
利用反射并使用setAccessible方法访问私有构造函数。
答案 2 :(得分:1)
下面是解决方案。:)下次我想要你做一些编码然后再问......:P
public class Lotion{
public Lotion(){
System.out.println(read("Constructor"));
}
private String read(String input){
return input;
}
}
class Tester{
public static void main(String[] args) {
new Lotion();
}
}
答案 3 :(得分:0)
答案 4 :(得分:0)
我认为您的教师正在暗示可以调用私有方法的位置以及如何构建代码。私有方法只能在同一个类中被调用(默认情况下,不依赖于字节码操作等基础知识技术,甚至是反射,这两者都不是本练习的重点)。这还包括构造函数。如果你再想一想,你应该拥有你需要的一切......