2012-08-04 134 views
0

比方说,我有Main类,它有一个类A的实例。主类中的Java调用方法

如何在A类中调用Main类中的方法?

谢谢!

+0

如果它是一个静态方法,就这样调用它。如果它不是一个静态方法,那么[A中的方法]需要一个'Main'的实例[在调用该方法时],否?但是,我建议在大多数情况下避免像这样的“循环”。 – 2012-08-04 05:23:00

+0

为什么不使用类方法get方法获取值到主类中,使用本地方法进行操作并将结果值发送回类A对象方法 – doNotCheckMyBlog 2012-08-04 05:24:58

+0

你最好的办法是把'Main'中的内容放到'B'类中。然后有'A'引用'B',并让'Main'做一些事情,比如'A a = new A();'和'a.doSomething();'。 – corsiKa 2012-08-04 05:29:52

回答

0

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

0

Main.methodName()用于静态方法。

尽管听起来像我想要做的事情可能是不好的做法。你的主要方法或类应该只是一个入口点

0

要从calss A中调用Main类中的方法,如果两个cals都没有关系,则需要类A中Main类的一个实例(考虑它们在同一个包中)像inheritance.if静态然后你可以调用Main.methodName();

1

这就是所谓的Composition ...... 当一个类有其他类的参考...

Composition优于Inheritance当我们需要一个或少数功能,但并非所有的功能一类。

如:

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 

} 
0

如果该方法是一个静态方法(即宣称与“公共静态返回类型方法()”),则A类,你需要调用Main.methodName ()。但是,如果方法是一个实例方法(声明为“public ReturnType methodName()”),那么您需要以某种方式将Main的实例传递给A的实例(可能通过构造函数或setter方法) 。在A类内部,你可以调用instanceOfMain.methodName()。

但是(正如一些人已经提到),这可能不是处理事情的最佳方式。主要课程应该只是程序开始的地方;它不是你应该做任何真正的程序逻辑的地方。