Java方法重写与重载的区别
class Animal{
public void move(){
System.out.println("动物可以移动");
}
}
class Dog extends Animal{
public void move(){
System.out.println("狗可以跑和走");
}
public void bark(){
System.out.println("狗可以吠叫");
}
}
public class TestDog{
public static void main(String args[]){
Animal a = new Animal(); // Animal 对象
Animal b = new Dog(); // Dog 对象
a.move();// 执行 Animal 类的方法
b.move();//执行 Dog 类的方法
//运行结果
//动物可以移动
//狗可以跑和走
b.bark();
}
}
//以上实例编译运行结果如下:
TestDog.java:30: cannot find symbol
symbol : method bark()
location: class Animal
b.bark();
Animal b = new Dog(); // Dog 对象
父类 b 引用子类Dog对象
b.move();
b.bark();
当使用多态类型调用方法时:
此时的b是Animal类,如果要调用子类的 b.move(),父类有move类的话则调用子类的同名方法。
如果要调用子类的b.bark();父类没有bark类,则会编译报错