初始化 Parent Class 时创建 Sub-Class 对象
Create Sub-Class Object when Parent Class is initialized
有没有办法在初始化(构造)父class时自动初始化子class?
例如像这样:
public class Parent {
public Parent() { //Constructor
...
}
public class Child {
public void foo() {
...
}
}
}
我希望能够做这样的事情:
Parent p = new Parent();
p.Child.foo();
有什么想法吗?我认为这全都与静态有关,但我不确定,因此我们将不胜感激。提前致谢。
也许是这样的:
public class Parent {
public Parent() { //Constructor
foo();
}
protected void foo() {
// Do nothing in parent
}
}
public class Child {
@Override
public void foo() {
...
}
}
编辑:这不是正确答案,因为 Child 不会扩展 Parent。
你不能那样称呼它。
如果子 class 必须是非静态 class 并且驻留在父 class 中,那么您必须在父 class 中启动它在使用它的任何方法之前或在它之外。
你有这个选项。
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();
试试这个代码:
第一部分是主要部分。你必须调用 que Parent 并使一个实例成为 Child (这是代码的第一道)之后,你可以使用子方法。
Parent child = new Parent().new Child();
child.foo();
另一方面,class:
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" 中写入以指定 class 的父级。
希望对您有所帮助!!!
有没有办法在初始化(构造)父class时自动初始化子class?
例如像这样:
public class Parent {
public Parent() { //Constructor
...
}
public class Child {
public void foo() {
...
}
}
}
我希望能够做这样的事情:
Parent p = new Parent();
p.Child.foo();
有什么想法吗?我认为这全都与静态有关,但我不确定,因此我们将不胜感激。提前致谢。
也许是这样的:
public class Parent {
public Parent() { //Constructor
foo();
}
protected void foo() {
// Do nothing in parent
}
}
public class Child {
@Override
public void foo() {
...
}
}
编辑:这不是正确答案,因为 Child 不会扩展 Parent。
你不能那样称呼它。
如果子 class 必须是非静态 class 并且驻留在父 class 中,那么您必须在父 class 中启动它在使用它的任何方法之前或在它之外。
你有这个选项。
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();
试试这个代码:
第一部分是主要部分。你必须调用 que Parent 并使一个实例成为 Child (这是代码的第一道)之后,你可以使用子方法。
Parent child = new Parent().new Child();
child.foo();
另一方面,class:
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" 中写入以指定 class 的父级。
希望对您有所帮助!!!