为了账号安全,请及时绑定邮箱和手机立即绑定

为什么我需要实例化我的类才能在静态方法中调用我的方法?

为什么我需要实例化我的类才能在静态方法中调用我的方法?

慕容708150 2021-10-28 17:12:53
我开始学习 Java 并有一个菜鸟问题。我的类块中有一组实例,有 2 个方法,1 个主要静态方法和 1 个无效方法public class CurrencyConverter {    int rupee = 63;    int dirham = 3;    int real = 3;    int chilean_peso = 595;    int mexican_peso = 18;    int _yen = 107;    int $austrailian = 2;    int dollar = 0;    int Rupee = 63;    /**    * @param args the command line arguments    */    public static void main(String[] args) {        // TODO code application logic here        CurrencyConverter cc = new CurrencyConverter();        cc.printCurrencies();    }    void printCurrencies() {        System.out.println("rupee: " + rupee);        System.out.println("dirham: " + dirham);        System.out.println("real: " + real);        System.out.println("chilean_peso: " + chilean_peso);        System.out.println("mexican_peso: " + mexican_peso);        System.out.println("yen: " + _yen);        System.out.println("australian: " + $austrailian);        System.out.println("dollar: " + dollar);        System.out.println("Rupee: " + Rupee);                    }       }现在我的问题是,为什么我需要实例化我的 CurrencyConverter 类才能调用 printCurrencies()?无论如何,您通常不能只调用方法吗?我在同一个班级?我尝试将 printCurrencies() 的访问修饰符更改为静态,但是我的局部变量不是静态的为什么我需要实例化?
查看完整描述

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() 的访问修饰符更改为静态,但是我的局部变量不是静态的。为什么我需要实例化?


非静态字段的副本在您明确创建它们之前不存在。


查看完整回答
反对 回复 2021-10-28
?
SMILET

TA贡献1796条经验 获得超4个赞

将类视为对象的模式或配方。实例化时,您将使用此特定模式创建一个对象。现在有一个带有您可以访问的值的对象。模式(因此类)只有可以保存特定值的字段的描述。因此,您无法访问任何值。

现在是静态:静态字段是在运行时开始时创建的字段。因此,您可以随时访问该值而无需创建对象,因为它们不属于某个对象,而是属于特定的类。

您摆脱实例化的解决方案是使该类的所有成员都是静态的。


查看完整回答
反对 回复 2021-10-28
  • 2 回答
  • 0 关注
  • 209 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信