2010-03-21 44 views
-1

我有Class1,它拥有一些方法:如何调用所有者的方法?

  1. setSomething()
  2. createObjectOfClass2()

现在,当我创建的Class2对象,是有可能从它调用setSomething方法?

+2

-1,你阻挠大家试图回答一个误导性的标题,而自己太。 – 2010-03-21 16:44:52

+0

你能举一个你想要做什么的具体例子吗? – 2010-03-21 16:49:28

回答

0

如果Class2中没有扩展的Class1,那么你就可以在1类的任何实例调用setSomething(),如果它不是一个静态方法:

Class1 c = new Class1(); 
c.setSomething(); 
+0

Class2似乎不是Class1的子类。 – 2010-03-21 16:37:24

+0

我通过错误的标题让你神秘。 Class2不是从class1派生的。 – joseph 2010-03-21 16:40:27

+0

@joseph:然后编辑它,'parent'的方法记住Class2扩展Class1 – Roman 2010-03-21 16:42:29

2

如果你喜欢,但你介绍的耦合,这稍后会使分离功能变得相当困难。只需公开setSomething并将第一个对象的引用传递给第二个构造器。

public class Class1 { 
    Class2 object2 = null; 

    public void setSomething(Object something) { ... } 

    public void createObjectOfClass2() { 
     object2 = new Class2(this); 
    } 
} 

public class Class2 { 
    public Class2(Class1 parent) { 
     parent.setSomething(new Foo()); 
    } 
} 
+0

'Class2(Class1 parent)' - 参数的名字非常奇怪,其中Class2不是从Class1继承的。 – Roman 2010-03-21 16:43:18

+0

罗马:“父母”是原来的标题,所以我去了。我认为它适合:我个人不喜欢用“父母”作为“超类”的假名。正如你在另一评论中所说的那样,“所有者”也适合 - 如果你喜欢,随时可以改变它。 – 2010-03-21 16:47:14

0

呼叫Parent.this.method()

例如为:

public class K1 
{ 
public class K2 
    { 
    public void hello() 
     { 
     K1.this.setSomething(); 
     } 

    } 

public void setSomething() 
    { 
    System.out.println("Set Something"); 
    } 

public K2 createObjectOfClass2() 
    { 
    return new K2(); 
    } 

public static void main(String args[]) 
    { 
    new K1().createObjectOfClass2().hello(); 
    } 


} 
+0

但我不想创建新的实例,我需要从实例调用它,创建类2 – joseph 2010-03-21 16:44:20

相关问题