【发布时间】:2020-05-04 00:11:17
【问题描述】:
我试图了解 Java 中的组合是如何工作的,但我遇到了困难。我有一个程序实例化一个客户对象,该对象具有一个计算机对象作为实例变量。 我的程序中有两种类型的计算机对象,桌面和笔记本子类,所以我的桌面类扩展了计算机,我的笔记本电脑类也扩展了计算机。我有我的计算机类作为一个抽象类,但我知道你不能实例化一个抽象对象。我不确定如何在我的 Customer 类中实例化 Computer 对象。任何见解表示赞赏! 示例代码:
public class Customer
{
private String name;
private Computer computer;
public Customer(String n)
{
setName(n);
this.computer = new Computer(); //Can't do this b/c Computer is abstract
}
//Setters and getters for name
public Computer getComputer()
{
return new Computer(this.computer);
}
public void setComputer(Computer computer)
{
this.computer = new Computer(computer);
}
}
public abstract class Computer{
}
public class Desktop extends Computer{
}
public class Laptop extends Computer{
}
【问题讨论】:
-
您也没有采用
Computer实例的Computer构造函数。所以,this.computer = new Computer(computer);和return new Computer(this.computer);也无效。 -
正如您自己所说,您不能实例化抽象类,但您可以使用
this.computer = new Desktop();或this.computer = new Laptop();。这将起作用,因为它们都扩展了计算机,并且可以在任何需要计算机的地方使用。 -
哦,我没有意识到你可以像这样简单地实例化子类!谢谢,这真的很有帮助!
标签: java