在Java中调用继承的方法

我有以下Java代码,


class Animal {

    private String name="Animal";


    public String getName() {

        return name;

    }

}


class Cat extends Animal {

    private String name = "Cat";

}


public class Test {

    public static void main(String[] args) {

        Cat cat = new Cat();

        System.out.println(cat.getName());

    }

}

运行该代码后,我得到了输出Animal,但我认为应该是Cat。getName在Cat像这样重写方法之后,我得到了Cat。


@Override

public String getName() {

    return name;

}

那是因为调用一个继承下来(不是凌驾于)方法的一个子类的实例,就像 cat.getName() 等于调用super.getName()(所以我得到Animal的,而不是Cat在第一种情况)?还是因为实例变量隐藏的奇怪行为(我不太确定)?


小怪兽爱吃肉
浏览 177回答 3
3回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java