gpt4 book ai didi

java - 哪个类可以访问我的方法?

转载 作者:行者123 更新时间:2023-11-30 11:12:44 26 4
gpt4 key购买 nike

我今天的问题是关于创建一个对象,以及哪些其他类可以访问它的方法。我正在尝试学习线程,但由于 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 的实例,但实际上您最好使用公共(public)接口(interface),这样可以解耦两个类并提高其可重用性

首先定义两个类之间的契约(作为接口(interface))...

public interface SomeMethods {
public void MyMethod();
}

添加通过构造函数或设置方法将 SomeMethods 的实现传递给 MyClass 的能力...

public class MyClass {
private SomeMethods someMethods;
public MyClass(SomeMethods someMethods) {
this.someMethods = someMethods;
}

public void someWork() {
someMethods.MyMethod();
}
}

MyMethodClass 实现 SomeMethods 接口(interface)并将其自身的引用传递给 MyClass

public MyMethodsClass implements SomeMethods {
public MyMethodClass () {
MyClass myClass = new MyClass(this);
}
@Override
public void MyMethod() {
//do something with the variables
}
}

请注意,从构造函数中将 this 传递给其他类或方法通常被认为不是一个好主意,因为对象的状态可能未完全实现,并且方法中的某些值/classes 所依赖的可能尚未初始化。

关于java - 哪个类可以访问我的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26746668/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com