关于Java中静态方法的困惑
据我所知,静态方法可以在不需要存在对象实例的情况下调用。因此,不必创建对象并调用该对象上的方法,只需调用类上的方法即可 现在,我有一个类关于Java中静态方法的困惑,java,static,Java,Static,据我所知,静态方法可以在不需要存在对象实例的情况下调用。因此,不必创建对象并调用该对象上的方法,只需调用类上的方法即可 现在,我有一个类Main,它有以下对象:publicScribbleCanvasMyCanvas。在ScribbleCanvas类中,我想访问Main-类的一个方法 现在,既然已经有一个Main的实例(因为它被称为ScribbleCanvas),我如何访问此类的非静态方法?或者更好的问题-我的推理错误在哪里?你可以将Main实例设置为myCanvas的成员并使用它。你可以将Ma
Main
,它有以下对象:publicScribbleCanvasMyCanvas代码>。在ScribbleCanvas
类中,我想访问Main
-类的一个方法
现在,既然已经有一个Main
的实例(因为它被称为ScribbleCanvas
),我如何访问此类的非静态方法?或者更好的问题-我的推理错误在哪里?你可以将Main
实例设置为myCanvas
的成员并使用它。你可以将Main
实例设置为myCanvas
的成员并使用它。你可以为ScribbleCanvas
设置一个构造函数或setter将参数作为Main
的当前实例
ScribbleCanvas sc = new ScribbleCanvas(this);
或
有了这些,您只需引用参数的一个字段。您可以为ScribbleCanvas
创建一个构造函数或setter,该构造函数或setter将参数作为Main
的当前实例
ScribbleCanvas sc = new ScribbleCanvas(this);
或
有了这些,您只需将一个字段引用到参数。下面的代码解释了应该如何操作。testInstanceMethod
被视为
主类中实例方法的示例。这种方法也应该是可访问的
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;
}
}
对于调用静态方法,您可以直接放置类名并使用点运算符调用,如Main.testStaticMethod()
,前提是该方法也可以访问
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;
}
}
免责声明:未测试/编译下面的代码解释了您应该如何执行此操作。testInstanceMethod
被视为
主类中实例方法的示例。这种方法也应该是可访问的
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;
}
}
对于调用静态方法,您可以直接放置类名并使用点运算符调用,如Main.testStaticMethod()
,前提是该方法也可以访问
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;
}
}
免责声明:未经测试/编译如果我理解您的问题,请:
- 有一个
Main
类的实例,我们称之为myMain
- 该实例将有一个名为
myCanvas
- 从
ScribbleCanvas
实例(myCanvas
)可以访问myMain
中的方法
为此,您可以:
- 在
ScribbleCanvas
中声明类型为Main
的成员,例如callingMain
- 在
ScribbleCanvas
- 在构造函数中,将
paramMain
存储在callingMain
- 从
Main
,将此
传递给构造函数
- 在代码中,您可以参考
callingMain.method()
这有帮助吗?如果我理解你的问题,你想:
- 有一个
Main
类的实例,我们称之为myMain
- 该实例将有一个名为
myCanvas
- 从
ScribbleCanvas
实例(myCanvas
)可以访问myMain
中的方法
为此,您可以:
- 在
ScribbleCanvas
中声明类型为Main
的成员,例如callingMain
- 在
ScribbleCanvas
- 在构造函数中,将
paramMain
存储在callingMain
- 从
Main
,将此
传递给构造函数
- 在代码中,您可以参考
callingMain.method()
这有帮助吗?您确定已经有主类的实例了吗?你的密码在哪里?你尝试过什么?你能提供更多细节吗?为什么需要从该类中调用Main的方法?ScribbleCanvas
是该类的名称。这与实例的存在有什么关系?你能展示一些代码吗?如果使用ScribbleCanvas的函数可以调用主类实例,则可以将该实例传递给ScribbleCanvas。如果没有,您可以将函数设置为“publicstatic”,然后它将可用于每个函数/类。您确定已经存在主类的实例吗?你的密码在哪里?你尝试过什么?你能提供更多细节吗?为什么需要从该类中调用Main的方法?ScribbleCanvas
是该类的名称。这与实例的存在有什么关系?你能展示一些代码吗?如果使用ScribbleCanvas的函数可以调用主类实例,则可以将该实例传递给ScribbleCanvas。如果没有,您可以将函数设置为“publicstatic”,然后它将可用于每个函数/类。