多态指的是同一个方法调用,由于对象不同可能会有不同的行为。现实生活中,同一个方法,具体的实现会不同。
多态的要点:
1.多态是方法的多态,不是属性的多态(多态与属性无关)。
2.多态的存在要有3个必要条件:继承,方法重写,父类引用指向子类对象。
3.父类引用指向子类对象后,用该父类引用调用子类重写的方法,此时多态就出现了。
package aaa.cshd;
/**
* 测试多态
*
* @author Memorial
*
*/
public class TestPolym {
public static void main(String[] args) {
Animal a = new Animal();
animalCry(a);
Animal d = new Dog(); //自动向上转型
animalCry(d);
animalCry(new Cat());
Animal c=new Cat();
Dog d2=(Dog)d; //强制向下转型
d2.seeDoor();
/*Dog d3=(Dog)c;
d3.seeDoor();*/
}
static void animalCry(Animal a) {
a.shout();
}
/*
* static void animalCry(Dog a) { a.shout(); } static void animalCry(Cat a) {
* a.shout(); }
*/
}
class Animal {
public void shout() {
System.out.println("叫了一声!!");
}
}
class Dog extends Animal {
public void shout() {
System.out.println("旺旺旺!");
}
public void seeDoor() {
System.out.println("看门中!");
}
}
class Cat extends Animal {
public void shout() {
System.out.println("喵喵喵!");
}
}