Java 子类实例到超类
如何基于超类对象创建子类对象 例如:Java 子类实例到超类,java,inheritance,Java,Inheritance,如何基于超类对象创建子类对象 例如: 如何创建具有先前创建的“超级”属性的“子”对象 或者我应该手动传递属性,例如: sub.setName(sup.getName()); sub.setId(sup.getId()); 我将在Sub中创建一个静态方法: Sub.fromSuper(Super s, String last) 我将在Sub中创建一个静态方法: Sub.fromSuper(Super s, String last) 您可以将副本构造函数添加到Super类中 public
如何创建具有先前创建的“超级”属性的“子”对象 或者我应该手动传递属性,例如:
sub.setName(sup.getName());
sub.setId(sup.getId());
我将在Sub中创建一个静态方法:
Sub.fromSuper(Super s, String last)
我将在Sub中创建一个静态方法:
Sub.fromSuper(Super s, String last)
您可以将副本构造函数添加到
Super
类中
public class Super {
private int id;
private String name;
public Super(String id, String name) {
this.id = id;
this.name = name;
}
public Super(Super other) {
this.id = other.id;
this.name = other.name;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
然后在子类中使用此构造函数
class Sub extends Super {
public Sub(Super other) {
super(other);
}
private String lastName;
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
}
你可以打电话
Sub sub = new Sub(sup);
您可以将副本构造函数添加到
Super
类中
public class Super {
private int id;
private String name;
public Super(String id, String name) {
this.id = id;
this.name = name;
}
public Super(Super other) {
this.id = other.id;
this.name = other.name;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
然后在子类中使用此构造函数
class Sub extends Super {
public Sub(Super other) {
super(other);
}
private String lastName;
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
}
你可以打电话
Sub sub = new Sub(sup);
我会使用apachecommons
BeanUtils.copyProperties(toBean, fromBean);
除非每个对象都需要方法,否则我不会向类本身添加方法。小海狸看起来很合适,因为它看起来像是只有在特定情况下才需要的东西
如果您真的需要每个对象上的行为,那么实现a是一种方法我将使用apache commons
BeanUtils.copyProperties(toBean, fromBean);
除非每个对象都需要方法,否则我不会向类本身添加方法。小海狸看起来很合适,因为它看起来像是只有在特定情况下才需要的东西
如果您确实需要每个对象上的行为,那么实现a是一种方法您的用例是什么?你为什么需要它?@nrainer我有
FirmwareVersion
和SoftwareVersion
扩展Version
的类。用户可以将一个或多个版本添加到列表中。因此,我调用newversion()
。当用户单击“保存”按钮时,他必须选择是固件版本还是软件版本。然后我可以调用newfirmwareversion()
或newsoftwareversion()
Ok。然后我假设不可能避免创建Version
的实例,是吗?我们谈论的是web应用程序吗?是的,在那个时候我不知道它将是什么类型的版本。所以,我必须创建一个通用版本。只有在以后,当用户选择时,我才能创建特定的版本。这是一个桌面应用程序。第一次我创建了一个抽象版本,但显然,它必须是一个具体的类。是否有接口方法的解决方案?为什么需要创建通用版本?你不能等到用户选择版本吗?你的用例是什么?你为什么需要它?@nrainer我有FirmwareVersion
和SoftwareVersion
扩展Version
的类。用户可以将一个或多个版本添加到列表中。因此,我调用newversion()
。当用户单击“保存”按钮时,他必须选择是固件版本还是软件版本。然后我可以调用newfirmwareversion()
或newsoftwareversion()
Ok。然后我假设不可能避免创建Version
的实例,是吗?我们谈论的是web应用程序吗?是的,在那个时候我不知道它将是什么类型的版本。所以,我必须创建一个通用版本。只有在以后,当用户选择时,我才能创建特定的版本。这是一个桌面应用程序。第一次我创建了一个抽象版本,但显然,它必须是一个具体的类。是否有接口方法的解决方案?为什么需要创建通用版本?你不能等到用户选择版本吗?