Java 什么类可以访问我的方法?
我今天的问题是关于创建一个对象,以及有哪些其他类可以访问它的方法。我试图学习线程,但由于JPanels不支持线程,我感到非常困惑 我创建了一个简化类,如下所示:Java 什么类可以访问我的方法?,java,object,methods,nested,Java,Object,Methods,Nested,我今天的问题是关于创建一个对象,以及有哪些其他类可以访问它的方法。我试图学习线程,但由于JPanels不支持线程,我感到非常困惑 我创建了一个简化类,如下所示: public class MyMethodClass { public MyMethodClass () { MyClass myClass = new MyClass(); } public void MyMethod() { //do something with the va
public class MyMethodClass {
public MyMethodClass () {
MyClass myClass = new MyClass();
}
public void MyMethod() {
//do something with the variables
}
}
所以我现在有了一个新的类对象myClass(myClass是另一个类,它的内容并不重要)。由于它们都是公共的,myClass
是否可以访问MyMethod
如果没有,是否有方法将副本MyMethodClass
传递到myClass
,以便它可以使用myMethod
,知道MyMethodClass
首先创建了myClass
如果类
MyClass
是嵌套类,它是否可以访问MyMethod
MyClass
将无法访问MyMethodClass
中的方法,除非它创建它的实例,在这种情况下,这是一个坏主意
您可以通过其构造函数或setter方法传递MyClass
的MyMethodClass
实例,但实际上最好使用公共接口,这样可以将两个类解耦并提高其可重用性
首先定义两个类之间的约定(作为接口)
添加通过构造函数或setter方法将SomeMethods
的实现传递到MyClass
的功能
public class MyClass {
private SomeMethods someMethods;
public MyClass(SomeMethods someMethods) {
this.someMethods = someMethods;
}
public void someWork() {
someMethods.MyMethod();
}
}
让MyMethodClass
实现SomeMethods
接口,并将自身的引用传递给MyClass
public MyMethodsClass implements SomeMethods {
public MyMethodClass () {
MyClass myClass = new MyClass(this);
}
@Override
public void MyMethod() {
//do something with the variables
}
}
请注意,通常认为从构造函数中将
此
传递给其他类或方法不是一个好主意,因为对象的状态可能尚未完全实现,并且方法/类所依赖的某些值可能尚未初始化。如果嵌套的MyClass是非静态的,然后MyClass的实例将引用外部类“this”。因此,在本例中,是的,它可以访问其父对象的实例方法。
public MyMethodsClass implements SomeMethods {
public MyMethodClass () {
MyClass myClass = new MyClass(this);
}
@Override
public void MyMethod() {
//do something with the variables
}
}