继承隐藏方法java

时间:2015-06-09 15:55:00

标签: java inheritance methods hidden

嗨,我在书上看到了这段代码的片段。但不知怎的,我无法完全理解java如何在公共场所使用私有方法

package com.toro.employee2;

public class Deer {
    public Deer() {
        System.out.print("Deer");
    }

    public Deer(int age) {
        System.out.print("DeerAge");
    }

    private boolean hasHorns() {
        return false;
    }

    public static void main(String[] args) {
        Deer deer = new Reindeer(5);
        System.out.println("," + deer.hasHorns());
    }
}

class Reindeer extends Deer {
    public Reindeer(int age) {
        System.out.print("Reindeer");
    }
    public boolean hasHorns() {
        return true;
    }
}

输出是DeerReindeer,false 我的问题是:

当我将Deer类hasHorns()方法更改为除PRIVATE之外的其他访问修饰符时,它将使用Reindeer类hasHorns()方法,从而返回true但如果Deer类hasHorns()方法使用PRIVATE访问修饰符,它将返回而不是假。

如果你能解释一下这是如何工作的话会很棒。

1 个答案:

答案 0 :(得分:1)

private方法不会被继承而不会被覆盖。因此,当您致电deer.hasHorns()时,执行的方法为Deer#hasHorns。实际上,如果您将main方法从Deer移到Reindeer或其他类,那么这段代码就会失败。

相关问题