我可以上高级班吗?

时间:2014-03-26 22:59:44

标签: java

抱歉我的英语不好。

你好我想知道我是否可以从它的孩子那里获得父母。例如,“A”对象,其中我创建“B”。有可能,这种方法有缺点吗?如果是这样的解决方案是什么?

编辑1:在我的情况下我有一个实例化两个对象的主对象,一个处理数据库的对象和另一个创建视图但我想从数据库中删除视图的对象,所以我可以将主对象放在构造函数中视图创建者类并使用oder中的主对象函数来访问数据库并擦除视图?或者这是一种避免的做法?

edit2:抱歉错误,我说的是对象,而不是关于类

编辑3:这是@DaveHowes的一个例子(感谢他)

class A {

public void doSomething(){
 B b = new B(this);
}

public void doSomethingElse(){
   // Do something wondrous
}

}

Class B {

private A par = null;
public B(A parent){
  par = parent;
}

public void callMethodInParent(){
   par.doSomethingElse();
}
  }
P.S:我不是在谈论继承。

3 个答案:

答案 0 :(得分:1)

我不确定我是否完全理解你的问题,但这里就是.....

如果你的意思是在A类中,你实例化了一个B类实例,那么B类将可以访问A类的数据和方法,除非你将对类A的实例的引用传递给类B.这通常在类B的构造函数中完成

这个人为的例子说明了我的意思

class A {

    public void doSomething(){
     B b = new B(this);
    }

    public void doSomethingElse(){
       // Do something wondrous
    }

}

Class B {

   private A par = null;
   public B(A parent){
      par = parent;
   }

   public void callMethodInParent(){
       par.doSomethingElse();
   }
}

答案 1 :(得分:0)

我相信你指的是嵌套/内部类,这里是example from C#example from java

答案 2 :(得分:0)

听起来你可能在谈论内部课程。这样

public class Outer {

    private class Inner {

    }
}

在这种情况下,内部类可以看到它的父级的所有成员,反之亦然。

public class Outer {

    private String id = "123c";

        private class Inner {

        public void useID() {
            String newID = id; //this works
        }
    }

内部类意味着它是外部类的扩展。当一个任务包含一个足够大的子任务用于它自己的对象,但仍然与主要对象紧密相关时,它可以被放入一个内部类,这有助于添加一层分离。由于内部类是它的外部类的扩展,它们依赖于能够看到彼此的成员而不管可见性。