方法的重写一般出现在不同的两个类,子类继承父类,方法的重写是实现动态多态的其中一个步骤。
动态多态,指的是,在运行阶段,系统决定调用哪个方法。在Java中的实现是通过子类对父类的方法覆盖(override)来实现的。
动态多态存在的三个必要条件:
1.子类继承于父类;
2.子类要重写父类的方法(override);
3.父类对象的引用,要指向子类对象。
代码示例:
package override;
//动物类
public class Animal {
//属性:名字
public String name;
//方法:吃东西
public void eat() {
System.out.println("吃点东西");
}
}
package override;
//定义狗类,它继承于动物类,并定义狗类自己的eat方法
public class Dog extends Animal{
public void eat() {
System.out.println("狗吃骨头");
}
}
package override;
//.定义牛类,它继承于动物类,并定义牛的eat方法
public class Cow extends Animal{
public void eat() {
System.out.println("牛吃草");
}
}
package override;
/**
* 在main方法中,创建动物对象,然后让它指向自己的子类对象,并调用eat方法。
*
*/
public class Test {
public static void main(String[] args) {
//1.创建一个动物类的对象
Animal animal = new Animal();
//2.创建一个狗对象,让动物对象指向狗对象
animal = new Dog();
//3.调用eat方法
animal.eat();
//4.创建一个牛对象,让动物对象指向牛对象
animal = new Cow();
//5.调用eat方法
animal.eat();
}
}