多态的实现必须有三个条件
1:必须要有继承
2:必须要有重写
3:父类引用指向子类对象
上面三个条件缺一不可
举例:
假设现在有一个父类Animal,这里为了方便,使用抽象类,Animal有唱歌、散步这两个方法,应该所有的动物都有这两个动作吧!
public abstract class Animal(){
public abstract void sing();
public abstract void run();
}
如果这时候有Dog类和Cat类继承了此类,
Dog.java
public class Dog extends Animal(){
public void sing(){
System.out.println("狗叫");
}
public void run(){
System.out.println("狗散步");
}
}
Cat.java
public class Cat extends Animal(){
public void sing(){
System.out.println("猫叫");
}
public void run(){
System.out.println("猫散步");
}
}
Test.java
......省略导包
public class Test(){
public static void main(String [] args){
Animal animal=new Dog();
animal.sing();
animal.run();
}
]
此时运行的话,控制台会打印:
狗叫
狗散步
如果此时我们想换成猫,那么只需要改半行代码就可以了
public class Test(){
public static void main(String [] args){
Animal animal=new Catl();
animal.sing();
animal.run();
}
]
此时运行的话,控制台会打印:
猫叫
猫散步
........
以后想换其他的动物,只要改一下就可以了,方法啥的都不用变,这样就简单多了