1、多态是方法的多态,不是属性的多态(与属性无关)。
2、多态的存在有3个必要条件:继承、方法重写、父类引用指向子类对象。
3、父类引用指向子类对象后,用该父类引用调用子类重写的方法,此时多态就出现了。
***父类引用指向子类对象,这个过程称为向上转型(子类可以自动转化成父类),属于自动类型转换,向上转型的父类引用变量只能调用其编译类型的方法,不能调用它运行时类型的方法,这时我们就需要进行类型转换,称为向下转型。
public class TestPloym {
public static void main(String[] args) {
Animal animal =new Animal();
/* animal.shout();
Animal dog = new Dog();
dog.shout();
Cat cat = new Cat();
cat.shout();*/
animalCry(animal);
Dog dog =new Dog();
animalCry(dog);
Cat cat =new Cat();
animalCry(cat);
}
static void animalCry(Animal animal){
animal.shout();
}
}
class Animal{
public void shout(){
System.out.println("叫一声");
}
}
class Dogextends Animal{
public void shout(){
System.out.println("汪汪汪");
}
}
class Catextends Animal{
public void shout(){
System.out.println("喵喵喵");
}
}