Java 组成示例

Java composition examples

谁能说出为什么第一个代码有效而第二个代码无效,是因为在第二个示例中我们没有创建 Monitor class 的对象,如果第一个示例之所以有效,是因为我们创建了一个对象,那么我们在哪里创建它呢?

class Pc {
Monitor monitor;

public Pc(Monitor monitor) {
    this.monitor = monitor;
}

void drawLogo() {
    monitor.drawPixelAt();
}

}


class Monitor {
void drawPixelAt() {
    System.out.println("Drawing pixel ");
}

}

public class Main {

public static void main(String[] args) {

    Pc pc = new Pc(new Monitor());
    pc.drawLogo();
}
}

第二个例子

class Pc {
Monitor monitor;

void drawLogo() {
    monitor.drawPixelAt();
}

}


class Monitor {
void drawPixelAt() {
    System.out.println("Drawing pixel ");
}
}

public class Main {

public static void main(String[] args) {

    Pc pc = new Pc();
    pc.drawLogo();
}
}

显示器需要成为您 PC 的构造器,首先它在那里所以一切都很好,而第二个根本没有显示器。 PC class 需要监视器,因为它被声明为构造函数。

就像其中一条评论所说的那样,因为那里什么都没有,所以你会得到一个空指针异常。

在第二个示例中,您从未初始化 "monitor" 变量,在第一个示例中,您在 PC

的构造函数中初始化 "monitor" 变量