我想知道是否可以在另一个java类中使用java类的变量.假定变量Time在A类中定义和计算,我如何在B类中使用它?
其他答案建议增加变量的可见性.不要这样做.它破坏了封装:你的类使用字段来存储特定信息的事实是一个实现细节; 您应该通过类的API(其方法)公开相关信息.几乎在所有情况下都应该将字段设为私有.
同样,其他一些答案也表明可能使变量成为静态.不要随意这样做.你需要了解什么静态真正含义是:它说,这条信息是有关类型,而不是类型的任何一个具体的实例.偶尔这是合适的,但它通常是一条通向不太可测试的代码的道路 - 在许多情况下它显然是错误的.例如,一个Person类可能有一个name变量,但肯定不应该是静态的 - 它显然是一个关于单个人的信息.
你应该仔细想反正公开信息之前-考虑是否有更广泛的操作所讨论的类可以公开,而不是仅仅放弃零碎的数据-但是当你不希望公开字段的值,使用属性.例如:
public class Person {
private final String name;
public Person(String name) {
this.name = name;
}
public String getName() {
return name;
}
}
Run Code Online (Sandbox Code Playgroud)
通过方法公开它,您可以稍后更改实现细节,而不会破坏现有客户端.
然后从另一个类中,您只需调用该getName()方法:
// However you end up getting a reference to an instance of Person
Person person = ...;
String name = person.getName();
Run Code Online (Sandbox Code Playgroud)
如果你这样做有一个静态字段,可以公开以同样的方式的价值,但有一个静态方法,你会打电话使用的类名.
注意返回可变的值,例如java.util.Date.这是使用getter方法而不是允许直接访问该字段的另一个原因 - 您可以使该方法返回您需要的防御副本.
| 归档时间: |
|
| 查看次数: |
137 次 |
| 最近记录: |