从不同的类调用主变量
Posted
技术标签:
【中文标题】从不同的类调用主变量【英文标题】:Calling main Variable from a different class 【发布时间】:2014-12-28 22:48:49 【问题描述】:您好,我对 Java 比较陌生,但我想我已经开始掌握它的一些窍门了。无论如何,我想知道是否有可能从一个完全不同的类访问在 main 方法(或类,如果这更容易的话)中声明的变量,如果可以,如何访问?例如,我编写了一个简单的生命游戏模拟程序,我希望能够通过更改一个变量来轻松更改网格的大小。然而,这个变量不仅需要改变计算机看到的功能网格,还需要改变 GUI 网格。由于 GUI 网格不在主类文件中,我不知道如何访问该变量。有什么建议吗?
//谢谢,伊瓦尔
【问题讨论】:
在开始 gui 编程之前,您应该了解 OOP 和封装。 The Java Tutorials - OOP 这是Java(和许多其他语言)编程的基础之一,称为作用域。简短的回答:没有。更长、更有用的答案:前往docs.oracle.com/javase/tutorial/java/index.html,通读一遍,在那一小时之后,你会更好地使用 Java。 与其弄清楚如何让 GUI 网格类访问主程序中的变量,不如添加一种方法让主程序告诉 GUI 网格类更改尺寸。这开始学习 OOP 背后的概念,所以我认为 @ifLoop 的建议很棒。 在方法内部本地声明的变量永远不能从外部更改。考虑这样做甚至没有意义,因为没有该变量的单个实例。相反,每次调用该函数时都会创建一个。 (一次可能不止一个,也可能为零。) 这很快,谢谢。 【参考方案1】:建议:最好的办法是获得一本关于 Java 和 OO 编程的教科书。你不可能仅仅通过编写程序来正确地学习这些东西。
这适用于寻找此类问题答案的任何其他人。
无论如何,我想知道是否可以从一个完全不同的类访问在 main 方法(或类,如果这更容易)中声明的变量,如果可以,如何访问?
main
方法中声明的变量是局部变量,不能从其他任何地方访问它1。
可以在包含main
方法的类(比如C
)中声明变量。
如果您创建了C
的实例,则可以从另一个类(以可见性规则为模...见下文)访问实例变量(也称为字段)。
静态变量不需要C
的实例...但另一方面是该变量只有一个实例。
可见性规则说明是否允许另一个类访问变量(或方法)。 private
字段根本不可见。每个班级都可以看到public
字段。 protected
和包私有可见性介于不可见和完全可见之间。
允许将所有字段声明为public
,以便所有内容都可以看到并(通常)修改状态。然而,这是一个坏主意,因为它打破了主要大型 OO 程序可理解和可维护所需的“抽象边界”。
1 - 这并不完全正确。方法的局部变量可能在范围内,并且对在方法中声明的嵌套类或 lambda 可见。但是,所述变量必须是 final
或有效的最终变量(取决于 Java 版本)。此外,我怀疑这是否是第一步编程练习的正确解决方案...
【讨论】:
以上是关于从不同的类调用主变量的主要内容,如果未能解决你的问题,请参考以下文章