假设我有Main
类,它有一个 class 实例A
。
如何在Main
类中调用类中的方法A
?
谢谢!
这被称为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
}
如果方法是静态方法(即用“public static ReturnType methodName()”声明),那么在A类中,你需要调用Main.methodName()。
但是,如果该方法是实例方法(声明为“public ReturnType methodName()”),那么您需要以某种方式将 Main 的实例传递给 A 的实例(可能通过构造函数或 setter 方法)。在 A 类中,您可以调用 instanceOfMain.methodName()。
然而(正如一些人已经提到的)这可能不是处理事情的最佳方式。Main 类应该只是程序开始的地方;它不是你应该做任何真正的程序逻辑的地方。
如果是实例方法,那么需要A里面有M的实例,才能调用A里面M的方法。如果是静态方法,直接调用即可。但是你持有循环引用,所以要小心。
Main.methodName() 用于静态方法。
尽管在我看来,您尝试做的事情可能是不好的做法。您的 Main 方法或类应该只是一个入口点
要从 calss A 调用 Main 类中的方法,如果两个 calsses 没有像继承这样的关系,则需要类 A 中的 Main 类的实例(考虑它们在同一个包中)。如果是静态的,那么您可以调用 Main.methodName();