以这个为例:
class Animal{
public void move(){
System.out.println("Animals can move");
}
}
class Dog extends Animal{
public void move(){
System.out.println("Dogs can walk and run");
}
}
public class TestDog{
public static void main(String args[]){
Animal a = new Animal(); // Animal reference and object
Animal b = new Dog(); // Animal reference but Dog object
a.move();// runs the method in Animal class
b.move();//Runs the method in Dog class
}
}
请问,在调用b.move()方法时,可以说“Dog类下的move()方法”覆盖了“Animal类下的move()方法”,因为当使用Animal类型引用相同方法时,Dog对象优先调用?
我注意到很多网站没有解释这个问题,只是举出例子,没有逐行讲解。我只想澄清一下术语混淆的问题。
另外,是否可能拥有一个Dog对象,但调用的是在Animal类下的move()方法?例如:
Dog doggy = new Dog();
doggy.move()
>>>
Animals can move
>>>
这是否可行?((Animal) doggy).move() 是否能实现这一点?