如果我们在Java中重写了方法,那么第一个调用哪个方法?
我知道,如果我们在Java中重写了方法,那么第一个被调用的方法就是重写方法。在本例中,我初始化了如果我们在Java中重写了方法,那么第一个调用哪个方法?,java,Java,我知道,如果我们在Java中重写了方法,那么第一个被调用的方法就是重写方法。在本例中,我初始化了Dog对象,并调用了f方法,该方法中有一个字符串。类番茄扩展类食品。但为什么在这种情况下,我得到的答案是null,而它的末尾应该是番茄名和blee public class Animal { String name; public void f(Food t) { System.out.println(t.name); } } public class Do
Dog
对象,并调用了f
方法,该方法中有一个字符串。类番茄
扩展类食品
。但为什么在这种情况下,我得到的答案是null
,而它的末尾应该是番茄名和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);
重写的方法具有等于签名 这个 还有这个
public void f(Tomato t)
有不同的方法
若你们想重写这个方法,你们应该在Dog类中编写它
public void f(Food t) {
System.out.println(t.name + "blee");
}
您没有覆盖
Dog
中的f
;方法中的参数类型必须相同。我们还没有看到对f
的调用是如何编写的,这在这里很重要。您还在Dog
中跟踪Animal.name
,这就是为什么会得到null
。我添加了额外的代码。。我真的不明白,如果我在dog对象上调用函数f,然后作为参数传递给tomato,怎么可能调用动物对象而不是dog?(你不应该在java代码周围放置javascript片段标记,它们不起作用,只是把你的答案弄得乱七八糟)我应该将java代码粘贴到“代码示例”中@SnakeDocno,只需在你的样本前面用后面的勾号或4个空格。原始Java代码无法在浏览器中运行,因此代码段标记没有任何用处。我已经读过,您可以使用子类参数,但它仍然是重写方法
public void f(Food t) {
System.out.println(t.name + "blee");
}