Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
主类中的Java调用方法_Java_Oop_Class - Fatal编程技术网

主类中的Java调用方法

主类中的Java调用方法,java,oop,class,Java,Oop,Class,假设我有Main类,它有一个classA的实例 如何在类a中调用Main类中的方法 谢谢 如果它是一个实例方法,那么您需要A中的M的一个实例来调用A中的M的方法。如果它是一个静态方法,您可以直接调用它。但是您持有的是循环引用,所以要小心。Main.methodName()表示静态方法 虽然我觉得你想做的可能是不好的练习。您的Main方法或类应该只是一个入口点要从calss a调用Main类中的方法,您需要类a中的Main类实例(将它们考虑在同一个包中),如果两个CALS之间没有继承之类的关系。如

假设我有
Main
类,它有一个class
A
的实例

如何在类
a
中调用
Main
类中的方法


谢谢

如果它是一个实例方法,那么您需要A中的M的一个实例来调用A中的M的方法。如果它是一个静态方法,您可以直接调用它。但是您持有的是循环引用,所以要小心。

Main.methodName()表示静态方法


虽然我觉得你想做的可能是不好的练习。您的Main方法或类应该只是一个入口点

要从calss a调用Main类中的方法,您需要类a中的Main类实例(将它们考虑在同一个包中),如果两个CALS之间没有继承之类的关系。如果是静态的,则可以调用Main.methodName()

这被称为
组合
,其中一个类引用了另一个类…

当我们需要一个类的一个或几个功能,而不是所有功能时,
组合比继承更受欢迎。

例如:

public class A{

 Main m = new M();  // m is a Object Reference Variable of type Main in class A
 m.go();           // go() is a method in class Main

 }

如果该方法是静态方法(即使用“publicstaticreturntype methodName()”声明),那么在类中,需要调用Main.methodName()

但是,如果该方法是实例方法(声明为“public ReturnType methodName()”),则需要以某种方式将Main的实例传递到的实例中(可能通过构造函数或setter方法)。在类内部,您可以调用instanceOfMain.methodName()


然而(正如一些人已经提到的)这可能不是处理事情的最佳方式。主类应该只是程序开始的地方;它不是您应该执行任何真正的程序逻辑的地方。

如果它是一个静态方法,就这样调用它。如果它不是一个静态方法,
a
中的方法需要一个
Main
[的实例来调用该方法],不是吗?但是,我建议在大多数情况下避免像这样的“循环”。为什么不在类A对象上使用get方法将值获取到主类中,使用本地方法进行操作,并使用set方法将结果值发送回类A对象?最好的办法是将
main
中的内容放入
B
类中。然后让
A
reference
B
,让
Main
只做
A=newa()之类的事情
a.doSomething()