Java 使用派生类实例创建超类的实例

Java 使用派生类实例创建超类的实例,java,object,inheritance,Java,Object,Inheritance,假设有一个类a(父类),B扩展了a(B是子类)。您拥有B的对象,并且希望从中获得A的等效对象(即)创建具有B中可用的A属性的A的对象 您可以创建一个函数,该函数基本上创建一个对象,并输入参数。我不想这样做的原因是,每次更改A时,我都必须进入并更改此函数,以便不会丢失任何属性 A类{ 公共字符串属性1; } B类扩展了A类{ 公共字符串属性2; public A returnAObject(){ //返回 } } B对象=新的B(“属性1”、“属性2”); A requiredObject=obj

假设有一个类a(父类),B扩展了a(B是子类)。您拥有B的对象,并且希望从中获得A的等效对象(即)创建具有B中可用的A属性的A的对象

您可以创建一个函数,该函数基本上创建一个对象,并输入参数。我不想这样做的原因是,每次更改A时,我都必须进入并更改此函数,以便不会丢失任何属性

A类{
公共字符串属性1;
}
B类扩展了A类{
公共字符串属性2;
public A returnAObject(){
//返回
}
}
B对象=新的B(“属性1”、“属性2”);
A requiredObject=object.returnAObject();

你不能只使用cast,即
requiredObject=(a)对象可能是您希望使用组合而不是继承。而不是
B扩展A
,而是
类B{public A getA();}
。但是:不,没有通用的解决方案,不可能用这样一个抽象的例子来讨论。如果你提供一个具体的用例,你可能会得到更好的答案。@Phil你为什么要投?只需在没有强制转换的情况下进行赋值。@Andreas你当然是对的,显式强制转换是多余的,但希望它能说明我试图表达的观点。你不能只使用强制转换,即
a requiredObject=(a)object可能是您希望使用组合而不是继承。而不是
B扩展A
,而是
类B{public A getA();}
。但是:不,没有通用的解决方案,不可能用这样一个抽象的例子来讨论。如果你提供一个具体的用例,你可能会得到更好的答案。@Phil你为什么要投?只需在不使用强制转换的情况下完成作业。@Andreas你当然是对的,显式强制转换是多余的,但希望它能说明我试图表达的观点。