据我了解static
,可以在没有需要存在的对象实例的情况下调用静态方法。因此,您可以在类上调用该方法,而不是创建对象并在该对象上调用该方法。
现在,我有一个类Main
,其中包含以下对象:public ScribbleCanvas myCanvas;
。在ScribbleCanvas
课程中,我想访问Main
- 类的方法。
现在,由于已经存在Main
的实例(因为这称为ScribbleCanvas
),如何访问此类的非静态方法?或者更好的问题 - 我的推理中的错误在哪里?
答案 0 :(得分:1)
您可以将Main
实例设置为myCanvas
的成员并使用它。
答案 1 :(得分:1)
您可以拥有ScribbleCanvas
的构造函数或setter,它将参数作为Main
的当前实例。
ScribbleCanvas sc = new ScribbleCanvas(this);
或
sc.setMainClass(this);
有了这些,你只需要在参数中引用一个字段。
答案 2 :(得分:1)
以下代码说明了您应该如何操作。 testInstanceMethod
被视为一个
Main类中实例方法的示例。此方法也应该可以访问
public class ScribbleCanvas{
private Main mainObject = null;
public ScribbleCanvas(){
this.mainObject = new Main();
//Call instance method in mainObject (member instance)
this.mainObject.testInstanceMethod();
}
public void setMainObject(Main arg){
this.mainObject = arg;
}
public Main getMainObject(){
return this.mainObject;
}
}
对于调用静态方法,您可以直接放置Classname并使用DOT运算符调用Main.testStaticMethod()
,前提是该方法也可以访问
免责声明:未经测试/编制
答案 3 :(得分:1)
如果我理解你想要的问题:
Main
课程的实例,我们称之为myMain
。ScribbleCanvas
类的实例,名为myCanvas
ScribbleCanvas
实例(myCanvas
)可以访问myMain
内的方法。为了做到这一点,你可以:
Main
中声明ScribbleCanvas
类型的成员,说callingMain
Main
paramMain
类型的参数(例如ScribbleCanvas
)
paramMain
存储在callingMain
Main
,将this
传递给构造函数callingMain.method()
这有帮助吗?