0

如果父亲是父母,父母是人并且人有父亲,我创建以下内容:

 class Person{
  Father father;
 }
 class Parent extends Person{}
 class Father extends Parent{}

实例:

Person p1 = new Person();
Person p2 = new Person();
p1.father = p2; //father is of the type Father

这不起作用......现在尝试投射::

Person p1 = new Person();
Person p2 = new Person();
p1.father = (Father)p2;

这也不起作用。

这种情况有什么作用?

4

3 回答 3

1

实际上,父亲不是人的子类。这只是一种关系。

 class Person {
    Person father;
 }
于 2010-06-06T10:10:44.973 回答
1

最明显的一点是,父亲是一个人。但是,当涉及到具体实例时,人不必是父亲。具体来说,如果您的父亲字段是 Person 类型,或者您将 p2 实例化为新的父亲,则此示例将起作用。

于 2010-06-06T10:13:02.847 回答
0

你不能那样投。你的人不是父亲,所以投给一个人是行不通的。您只能转换为对象的东西。

Person p1 = new Person();
Person p2 = new Father();
p1.father = (Father)p2;

或直接:

Father p2 = new Father();
p1.father = p2;

但是作为父亲在阶级层次中并不是一个很好的区分。我可能不会为它创建一个自己的类:作为父亲只是一个人履行的许多角色之一,所以我会删除该类并将该father成员声明为常规成员Person。对Parent.

于 2010-06-06T10:11:14.750 回答