多态,顾名思义,就是多种状态。
谈及多态,离不开继承,因为只有有了继承,才会有定义了父类对象引用变量时,能够引用不同的子类对象,从而实现一个参数,可以因情况而实现不同的功能。
我们先来看声明引用和创建对象的方法:1.声明一个引用变量 Dog myDog=new Dog(); 2.创建对象Dog myDog=new Dog(); 3.连接对象和引用Dog myDog=new Dog();但在多态下引用与对象可以使不同的类型 Animal myDog=new Dog();
上例说明运用多态时,引用类型是实际对象类型的父类。而且参数和返回类型也可以运用多态!下面举一个参数多态的例子。
class Animal{
public void makeNoise(){};
public void sleep(){};
public void eat(){};
}
class Dog extends Animal{
public void makeNoise(){
//Dog的makeNoise方法
}
}
class Hippo extends Animal{
public void makeNoise(){
//Hippo的makeNoise方法
}
}
class A{
public void f(Animal a){
a.makeNoise();
}
}
class Run{
public static void main(String [] args){
A a=new A();
Dog dog=new Dog();
Hippo hippo=new Hippo();
a.f(dog); //执行Dog的makeNoise()
a.f(hippo); //执行Hippo的makeNoise()
}
}