初始化父类时创建子类对象

时间:2015-12-16 13:03:43

标签: java class parent-child subclass

有没有办法在初始化(构造)父类时自动初始化子类?

例如:

public class Parent {
    public Parent() { //Constructor
    ...
    }

    public class Child {
        public void foo() {
        ...
        }
    }
}

我希望能够做到这样的事情:

Parent p = new Parent();
p.Child.foo();

任何想法?我认为这完全是静态的,但我不确定,所以任何帮助都会受到赞赏。提前谢谢。

3 个答案:

答案 0 :(得分:2)

你不能这样称呼它。

如果子类必须是非静态类并且驻留在父类中,那么在使用其任何方法之前,您必须在父类或其外部启动它。

你有这个选择。

public class Parent {

    private Child child;

    public Child getChild() {
        return child;
    }

    public Parent() { //Constructor
        this.child = new Child();
    }

    public class Child {
        public void foo() {
            ...
        }
    }
}

之后你可以用这种方式调用foo()方法。

Parent p = new Parent();
p.getChild().foo();

答案 1 :(得分:0)

也许有点像这样:

public class Parent {
    public Parent() { //Constructor
      foo();
    }

    protected void foo() {
    // Do nothing in parent
    }
}

public class Child {
        @Override
        public void foo() {
        ...
        }
}

编辑:这不是正确的anwser,因为Child不会扩展Parent。

答案 2 :(得分:0)

试试这段代码:

这第一部分是主要部分。你必须调用que Parent并使一个实例成为Child(这是代码的第一个通道)之后,你可以使用子方法。

    Parent child = new Parent().new Child();
    child.foo();

另一方面,班级:

    public class Parent {

public Parent(){

}

protected void foo(){

}

public class Child extends Parent{
    public Child(){

    }

    @Override
    public void foo(){
        System.out.println("I am the child!!");
    }
}

}

正如您所看到的那样,您已经非常相似,但您必须在子项“extends Parent”中写入以指定该类的父级。

我希望能帮到你!!!