子类也可以是超类吗?

时间:2015-05-21 06:10:34

标签: java oop inheritance subclass superclass

子类是否也可以是Java中另一个子类的超类?也许这不是最好的例子,但请考虑以下类:

public class Animal { }
public class Dog extends Animal { } 
public class Cat extends Animal { } 
public class Siamese extends Cat { }
public class JackRussel extends Dog { }

继承是否允许这种行为?

鉴于JackRussels需要动物和狗的方法和属性,而Siamese's需要Animal和Cat的方法和属性。

如果没有,是否有一种我可以采取的通用方法来实现这种行为?

干杯

2 个答案:

答案 0 :(得分:1)

是的,这种行为正是在Java中使用继承时所期望的。 这里有一些您可能会觉得有用的快速阅读:http://www.homeandlearn.co.uk/java/java_inheritance.html

您的JackRussel对象将继承其动物和狗类超级类中的所有字段和方法:

  • 未宣布私有;
  • 未被覆盖(在这种情况下,只能访问已覆盖的);
  • 没有阴影(在这种情况下只能访问阴影一个);

这是Java中阴影和覆盖的另一个快速链接: http://docstore.mik.ua/orelly/java-ent/jnut/ch03_04.htm

考虑到这些要点,您可以轻松设计可以将父级行为和状态传播给其所有子级的继承树。

感谢。

答案 1 :(得分:0)

当然这是可能的。但是说暹罗语要求两个超类的方法和字段都有点错误。当cat扩展动物时,它会获得动物的所有领域和方法(如果你不覆盖它们)。然后,当Siamese扩展该cat类时,它将自动获取整个Cat类,包括来自Animal类的内容,无论它们是否被覆盖。

简而言之,这是可能的。