首先举一个例子,这个世界上有很多的动物,比如猫、狗、猪,这些都是动物,类似这个,其实就是一个简单的多态的概念
接下来看一段代码:
package com.ProgrammerC.test;
class Animal{
public void voice(){
System.out.println("Animal's voice");
}
}
class Cat extends Animal{
public void voice(){
System.out.println("miao");
}
}
class Dog extends Animal{
public void voice(){
System.out.println("wang");
}
}
class Pig extends Animal{
public void voice(){
System.out.println("heng");
}
}
public class test {
public static void testVoice(Animal t){
t.voice();
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Animal a1 = new Cat();
Animal a2 = new Dog();
Animal a3 = new Pig();
testVoice(a1);
testVoice(a2);
testVoice(a3);
Cat c2 = (Cat)a1;
c2.voice();
}
}
在上述代码中,Dog,Cat,Pig分别继承了Animal类,并重写了父类的Voice方法,在main函数中Animal类分别向下继承cat,dog,pig,并且调用testvoice方法,结果是执行子类中的方法,编译时的类型是Animal,而执行时分别执行的是不同的子类,因此实现了多态。上述是一个简单的多态的例子。
所以总结一下,多态实现一般有以下过程:
1. 继承
2.重写
3.父类引用指向子类对象