Java 允许两个类共享变量和方法
所以我正努力使我的计划更有条理。要做到这一点,我有一个包含我的方法的文件,另一个有事件监听器和变量。第二个文件需要使用第一个文件中的方法来更改变量等等。第一个需要使用第二个的变量才能正常运行。基本上:Java 允许两个类共享变量和方法,java,oop,organization,Java,Oop,Organization,所以我正努力使我的计划更有条理。要做到这一点,我有一个包含我的方法的文件,另一个有事件监听器和变量。第二个文件需要使用第一个文件中的方法来更改变量等等。第一个需要使用第二个的变量才能正常运行。基本上: public class Controls extends javax.swing.Jfarme{ int turns = 0; int stuff = btnSet(jButton1); } public class GamePlay{ public int btnSet(j
public class Controls extends javax.swing.Jfarme{
int turns = 0;
int stuff = btnSet(jButton1);
}
public class GamePlay{
public int btnSet(javax.swing.JButton btn){
//do stuff using turn
turn++;
}
}
这有意义吗?我怎样才能让这两个人分享?编辑:我想要两节课,让它更有条理。我做了Tictatcoe,然后是Tictatcwo,现在是Tictacube。它只是变得有点混乱(我现在有243个jbutton要跟踪)。我只想将我的方法从正在执行的代码中分离出来,使之变得漂亮 据我所知,有两种有效的方法可以做到这一点:静态的,或者使用对象(java毕竟是一种面向对象的语言) 静态地 对此的静态方法实际上意味着所有变量和方法都属于类本身。这需要将关键字
static
放在Controls类中的所有变量和GamePlay类中的所有方法之前。所有这些都可以通过ClassName.variable
或ClassName.method()
来访问,例如控件.旋转
或游戏性.btnSet(btn)
使用对象
这种方法意味着创建类的新实例,每个实例都包含自己的实例变量和方法,可以使用instance\u name.variable
或instance\u name.method()
访问它们。这将涉及到创建类的实例,例如控件实例=新控件()
或游戏性GamePlay\u实例=新游戏性()
,然后引用它们的属性,例如控件实例.turns
或游戏性实例.setBtn
免责声明:当然,设计应用程序的类体系结构有很多种方法,因此下面的方法只是其中一种(但不是最坏的)
我的印象是,您还没有采用面向对象设计和编程的概念
如果你向其他人描述(游戏?)应用程序,你肯定会用到很多名词和动词。经验法则是用名词造出类,用动词造出方法。我猜“控制”(尤其是复数)和“游戏性”这两个词在你的描述中不会是最突出的,所以不要从这里开始。相反,我希望看到像“玩家”、“棋盘”或“人物”这样的名词,以及像“移动”、“收集”、“射击”之类的动词,或者你的游戏是关于什么的。对于动词,成为方法,你必须决定它们属于哪一类,你主要通过回答谁或句子的主语是什么来做到这一点,因此例如move()
应该成为Figure
的方法,因为移动的不是棋盘或玩家,而是棋盘上的人物
在进一步设计类时,应将重点放在实体的内部工作方式(“业务逻辑”),而不是用户界面上,这应该放在不同的类中
因此,一个像样的应用程序设计可能有一个GamePlay
类,它具有应用程序的顶级工作流,但是GamePlay
中不应该有任何用户界面(javax.swing.*)元素。用户界面(可能类似于您的控件
类)应该只通过调用游戏
及其同伴的一些方法而不是通过读取字段来与他们进行通信
关于StackOverflow的问题:最好将真实代码的一部分复制到问题中,这样您就可以避免像Jfarme
这样的打字错误,而不是JFrame
,这样它才能与您当前的设计配合使用:
Controls
类中的btnset()
函数,请将GamePlay
类导入Controls
类,然后实例化GamePlay
类对象以访问其btnset()
函数。
例如,GamePlay GamePlay=newgameplay()代码>
gameplay.btnset()代码>
GamePlay
类中使用turns
变量,请将Controls
类导入GamePlay
类,然后实例化Controls
类对象以访问其turns
变量。
前任。
Controls=新控件()代码>
controls.turns++代码>
或者,可以将方法或变量设置为静态,这样就不需要首先实例化对象。如果方法/变量是静态的,您可以调用
GamePlay.btnset()代码>或控件代码>为什么首先需要两个类?类应该包含所有需要运行的变量和方法。如果您创建的两个类都需要共享方法,它们可能应该扩展具有这些方法的超类。请描述这两个类之间的关系。游戏性
对控件
意味着什么,反之亦然?仅供参考-如果你不理解所提出的问题,你可以对问题发表评论,要求澄清。@Makoto谢谢,我以后回答问题时会记住这一点:)我完全知道我还在学习,但是命名的基本概念和类似的东西对我来说并不难,我只是在一分钟内把这篇小文章拼凑起来,因为我还没有真正编写任何代码。在这种情况下,btnSet需要使用JBtn来设置文本。啊,是的,这应该可以工作,我忘了这是一件事。我试试看。