如果我们在Java中使用重写方法,哪个方法称为第一个方法?

时间:2015-02-05 23:41:42

标签: java

据我所知,如果我们在Java中重写了方法,那么被调用的第一个方法将被覆盖。在这种情况下,我已初始化Dog对象,并调用方法f,其中包含一个String。类Tomato扩展了类Food。但是为什么在这种情况下我得到的答案是null,当它最后应该是 tomato 名称和 blee 时?

public class Animal {
    String name;

    public void f(Food t) {
        System.out.println(t.name);
    }
}

public class Dog extends Animal {
    String name;

    public void f(Tomato t) {
        System.out.println(t.name + "blee");
    }
}

这是电话:

番茄是食物的子类!

Tomato t = new Tomato();
    t.name = "jdfjkgdlkg";


    Animal amor = new Dog();

    amor.f(t);

1 个答案:

答案 0 :(得分:2)

overriden方法具有等于签名

public void f(Food t)

和这个

public void f(Tomato t)

是不同的方法

如果要覆盖方法,则应在Dog类中编写

public void f(Food t) {

    System.out.println(t.name + "blee");
}