多态涉及到继承、转型。多态指的是同一个方法调用,由于对象不同可能会有不同的行为。比如吃饭,我吃饭的方法可能和你吃饭方法不一样。
要点:
-
多态是方法的多态,不是属性的多态(多态与属性无关)
-
多态的存在有3个必要条件:继承、方法重写、父类引用指向子类对象
-
父类引用指向子类对象后,用该父类引用调用子类重写的方法,此时多态就出现了。
public class Animals {
public void shout() {
System.out.println("叫了一声");
}
}
class Dog extends Animals{
@Override
public void shout() {
System.out.println("汪汪汪");
}
}
class Cat extends Animals{
@Override
public void shout() {
System.out.println("喵喵喵");
}
}
class Mouse extends Animals{
}
public class Test {
//有了多态,只需要让增加的这个类继承Animals类就可以了
static void animalCry(Animals a) {
a.shout();
}
public static void main(String[] args) {
Animals a1 = new Cat(); //向上自动转型,父类引用子类对象
Animals a2 = new Dog();
animalCry(a1);
animalCry(a2);
Dog d = new Dog();
animalCry(d);
}
}