2 回答
TA贡献1712条经验 获得超3个赞
非静态字段与实例相关联。每个实例都有这些字段的一个副本。
public class CurrencyConverter {
int rupee = 63; // non static instance field
int dirham = 3; // non static instance field
// etc.
为什么我需要实例化我的 CurrencyConverter 类才能调用 printCurrencies()?
没有实例,您的副本为零,因此没有可打印的内容。
无论如何,您通常不能只调用方法吗?
如果您将方法设为静态并删除对实例字段的所有引用,那么是的,您可以。这运行得很好,但它不再做任何有用的事情。
public static void main(String[] args) {
printCurrencies();
}
static void printCurrencies() {
}
我在同一个班级?
不知道你的意思,但只有一个班级,一切都在里面。
int rupee = 63;
int Rupee = 63;
除非你喜欢混乱,否则不要这样做。您应该在名称中明确每个字段的不同用途。
我尝试将 printCurrencies() 的访问修饰符更改为静态,但是我的局部变量不是静态的。为什么我需要实例化?
非静态字段的副本在您明确创建它们之前不存在。
TA贡献1796条经验 获得超4个赞
将类视为对象的模式或配方。实例化时,您将使用此特定模式创建一个对象。现在有一个带有您可以访问的值的对象。模式(因此类)只有可以保存特定值的字段的描述。因此,您无法访问任何值。
现在是静态:静态字段是在运行时开始时创建的字段。因此,您可以随时访问该值而无需创建对象,因为它们不属于某个对象,而是属于特定的类。
您摆脱实例化的解决方案是使该类的所有成员都是静态的。
添加回答
举报