Java 什么类可以访问我的方法?

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

我今天的问题是关于创建一个对象,以及有哪些其他类可以访问它的方法。我试图学习线程,但由于JPanels不支持线程,我感到非常困惑

我创建了一个简化类,如下所示:

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
    }
}