2014-11-04 40 views
2

我今天的问题是关于创建一个对象,还有哪些其他类可以访问它的方法。我想了解线程,但由于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

+0

如果你的嵌套MyClass是非静态的,那么MyClass的一个实例将有一个对外部类的引用this。所以在这种情况下,是的,它可以访问其父实例方法。 – 2014-11-04 23:03:23

回答

1

MyClass将无法​​访问MyMethodClass中的方法,除非它创建它的一个实例,在这种情况下,这是一个坏主意。

你可以通过可能的构造函数或setter方法传递MyClassMyMethodClass一个实例,但你其实可以更好地利用通用的接口,这会脱钩两个阶级,提高其可重用性

开始通过定义这两个类之间的约定(如接口)...

public interface SomeMethods { 
    public void MyMethod(); 
} 

加入的SomeMethods实现传递给它通过构造函数或setter方法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 
    } 
} 

的本身的引用只是要小心,它通常不被认为是一个好主意,通过this到其他类或方法从构造方法中,如对象的状态可能不完全实现,并且方法/类所依赖的某些值可能尚未初始化。

相关问题