因此,假设有一个类A(父类),B扩展了A(B是子类)。您有B的对象,并且想要从中获得A的等效对象(即,使用A的属性创建A的对象,该属性在B中可用。
您可以通过输入参数来创建一个基本上创建A对象的函数。我不想这样做的原因是,每次更改A时,我都必须进入并更改此函数,以使所有属性都不会丢失。
Class A{
public String Property1;
}
Class B extends A{
public String Property2;
public A returnAObject(){
// returns object of A
}
}
B object = new B("property1","property2");
A requiredObject = object.returnAObject();
您拥有B的对象,并且想要从中获得A的等效对象(即,使用B中可用的A的属性创建A的对象。
没有现成的解决方案可实现此目标。
我不想这样做的原因是,每次更改A时,我必须进入并更改此功能,以便没有任何属性丢失。
实现此目标的一种方法是在类A
中引入一个子类可以继承的方法(例如,说createFromA
)。这样,如果将新属性添加到A
,则仅A
会更改,而子类不会更改。毕竟,您感兴趣的是A
的属性,因此A
是唯一应更改的类。
class A {
private String property1;
private String property2;
public A(String property1, String propert2) {
super();
this.property1 = property1;
this.property2 = propert2;
}
public final A createfromA(A a) {
A newA = new A(a.getProperty1(),a.getProperty2());
return newA;
}
//getters and setters follow..
}
class B extends A {
private String property3;
public B(String property1, String property2,String property3) {
super(property1, property2);
this.property3 = property3;
}
//getters and setters follow..
}
然后,根据A
的属性创建新实例将很简单:
A a = new B("1","2","3");
A newA = a.createfromA(a);