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" 变量
谁能说出为什么第一个代码有效而第二个代码无效,是因为在第二个示例中我们没有创建 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" 变量