继承问题OOP扩展

时间:2010-06-06 10:08:44

标签: java oop inheritance extend superclass

如果父亲是父母,父母是父亲,而父亲是父亲,我会创建以下内容:

 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;

这也不起作用。

这种情况有什么作用?

3 个答案:

答案 0 :(得分:1)

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

 class Person {
    Person father;
 }

答案 1 :(得分:1)

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

答案 2 :(得分:0)

你不能这样投。你的人一个父亲,所以投射到一个人将无法工作。您只能转换为对象 的内容。

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

或直接:

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

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