子类也可以是超类吗?
Can a subclass also be a 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 需要 Animal 和 Dog 的方法和属性,而 Siamese 需要 Animal 和 Cat 的方法和属性。
如果没有,是否有一种通用的方法可以实现这种行为?
干杯
当然可以。但是说 Siamese 需要来自两个 superclasses 的方法和字段有点不对。当 cat extends animal 时,它会获得 animal 的所有字段和方法(如果你不覆盖它们)。然后,当 Siamese 扩展那只猫 class 时,它会自动获得整个猫 class,包括来自动物 class 的东西,无论它们是否被覆盖。
简而言之,这是可能的。
是的,这种行为正是在 Java 中使用继承时所期望的。
这里有一些您可能会发现有用的快速阅读:http://www.homeandlearn.co.uk/java/java_inheritance.html
您的 JackRussel 对象将从它的 Animal 和 Dog super-类 继承所有字段和方法,它们是:
- 未声明为私有;
- 未被覆盖(在这种情况下将只能访问 被覆盖的);
- 未隐藏(在这种情况下将只能访问 隐藏的 一个);
这是另一个关于 Java 中的阴影和覆盖的快速 link:
http://docstore.mik.ua/orelly/java-ent/jnut/ch03_04.htm
考虑到这些点,您可以轻松设计继承树,将父项的行为和状态传播到其所有子项。
谢谢。
子类也可以是 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 需要 Animal 和 Dog 的方法和属性,而 Siamese 需要 Animal 和 Cat 的方法和属性。
如果没有,是否有一种通用的方法可以实现这种行为?
干杯
当然可以。但是说 Siamese 需要来自两个 superclasses 的方法和字段有点不对。当 cat extends animal 时,它会获得 animal 的所有字段和方法(如果你不覆盖它们)。然后,当 Siamese 扩展那只猫 class 时,它会自动获得整个猫 class,包括来自动物 class 的东西,无论它们是否被覆盖。
简而言之,这是可能的。
是的,这种行为正是在 Java 中使用继承时所期望的。 这里有一些您可能会发现有用的快速阅读:http://www.homeandlearn.co.uk/java/java_inheritance.html
您的 JackRussel 对象将从它的 Animal 和 Dog super-类 继承所有字段和方法,它们是:
- 未声明为私有;
- 未被覆盖(在这种情况下将只能访问 被覆盖的);
- 未隐藏(在这种情况下将只能访问 隐藏的 一个);
这是另一个关于 Java 中的阴影和覆盖的快速 link: http://docstore.mik.ua/orelly/java-ent/jnut/ch03_04.htm
考虑到这些点,您可以轻松设计继承树,将父项的行为和状态传播到其所有子项。
谢谢。