Ste*_*n B 1 java class creation object
我有以下主类和主要方法:
public class Main {
Peter peter = new Peter(this);
Tom tom = new Tom(this);
public static void main(String[] args) {
Main main = new Main();
System.out.println(main.peter.tom);
System.out.println(main.tom.peter);
}
}
Run Code Online (Sandbox Code Playgroud)
以及以下Parent类:
class Enemy {
//some variables
}
Run Code Online (Sandbox Code Playgroud)
以及两个子课程:
class Tom extends Enemy {
Enemy peter;
Tom(Main main) {
this.peter = main.peter;
}
}
class Peter extends Enemy {
Enemy tom;
Peter(Main main) {
this.tom = main.tom;
}
}
Run Code Online (Sandbox Code Playgroud)
当两个打印方法在main方法中运行时,第一个返回null,因为Tom在分配时没有创建Enemy tom.为了解决这个问题,我没有在构造函数中分配Tom和Peter使用Enemy,而是在创建两个对象之后使用方法.所以更像这样:
private void setEnemies(){
peter.tom = tom;
tom.peter = peter;
}
Run Code Online (Sandbox Code Playgroud)
当在println方法之前调用该方法时,它可以完美地工作.我的问题是:有没有办法在对象创建时设置敌人,所以我不必在创建对象后调用单独的方法?
简短的回答是:不,你不能.原因是您必须一次创建一个这样的实例; 当你创建第一个时,第二个尚不存在,所以不能传递给第一个.
但这不应该是一个可怕的限制.您想要为该类添加一个void setEnemy(Enemy myEnemy)方法Enemy,然后为每个敌人调用它.像这样的东西:
Enemy peter = new Peter();
Enemy tom = new Tom();
peter.setEnemy(tom);
tom.setEnemy(peter);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
509 次 |
| 最近记录: |