有没有办法在初始化(构造)父类时自动初始化子类?
例如:
public class Parent {
public Parent() { //Constructor
...
}
public class Child {
public void foo() {
...
}
}
}
我希望能够做到这样的事情:
Parent p = new Parent();
p.Child.foo();
任何想法?我认为这完全是静态的,但我不确定,所以任何帮助都会受到赞赏。提前谢谢。
答案 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”中写入以指定该类的父级。
我希望能帮到你!!!