【发布时间】:2018-12-21 06:11:25
【问题描述】:
我目前正在学习 java 并且无法理解这个主题。 用超类引用子类对象。在浏览了多个网站和帖子之后,我的困惑增加了。 示例代码:
public abstract class Bird {
private void fly() {
System.out.println("Bird is flying");
}
public static void main(String[] args) {
Bird bird = new Pelican();
bird.fly();
}
}
class Pelican extends Bird {
protected void fly() {
System.out.println("Pelican is flying");
}
}
输出是鸟在飞 - 为什么?
我还有 3 个问题:
Bird bird = new Pelican();
在上面的部分中,我可以使用什么来代替 Bird 类型(如果有更多类扩展 Bird)?我正在准备 OCA 1 考试,关于这个主题的问题让我很困惑。
使用这些引用时会输出哪些方法和变量?在上面的例子中,创建了 pelican 对象,但是运行的 fly 方法是bird?
如果 Casting 完成了,我可以使用哪些类型,我不能使用哪些类型?
在 stackoverflow 和其他 java 网站上有多个关于此的问题,但多个来源,多个答案让我感到困惑。我知道时间很宝贵,但有人可以为我一劳永逸地消除这个疑问吗?
提前致谢。
【问题讨论】:
标签: java inheritance reference subclass superclass