【发布时间】:2018-05-16 14:55:53
【问题描述】:
我正在这样做:
Child child = (Child)parent;
这给了我一个错误,我发现不可能这样做。我不知道具体原因,但我认为应该有可能,如果Child 类继承自Parent 类,它包含Parent 对象数据。
我的问题是:
- 为什么它不起作用?
- 如何在不设置每个父母的情况下完成这项工作 像这样的属性
:
class Parent{
public int parameter1;//...
public int parameter1000;
}
class Child extends Parent
{
public Child(Parent parent)
{
this.parameter1 = parent.parameter1;//...
this.parameter1000 = parent.parameter1000;
}
}
【问题讨论】:
-
它是可以这样做,iff
parent实际上是指Child实例。 -
parent是什么类型? -
我从文件中加载了一些数据,例如: public Parent loadMe() { Parent p = new Parent(); ... 返回 p; } 然后我需要将此父级重铸为它的一些子级
-
您尝试做的事情是不可能的。狗是动物,但动物并不(总是)是狗。铸造不会神奇地将一种类型的对象转换为另一种类型。它只是告诉编译器你比编译器更了解对象的实际类型。如果您需要
Child,那么您需要使用new Child()而不是new Parent()。 -
我有多个孩子,我不能只做20个相同内容的方法,只返回一个孩子,这是可能的,但我相信它可以做得更容易更好。
标签: java class oop inheritance parent