多态
多态指的是同一方法调用,由于对象不同可能会有不用的行为。在现实生活中,同一个方法,具体实现有可能完全不同,例如你叫一个人去玩,学霸就可能偷偷溜去学习,有的人则是跑去看电影,而我就有可能去睡觉,所以玩()这个方法,可能会有不同的行为,也称为方法的多态,属性是没有多态的。
多态实现需要三个必要条件:
- 1、父类对象指向之类对象
- 2、继承
- 3、重写
看一个具体的小例子:
**package com.liuzeyu12a.OOT;
/** * 实现多态的三个必要条件 * 1、父类对象指向之类对象 * 2、继承 * 3、重写 */
public class TestPolym {
public static void main(String[] args) {
Animal a = new Animal();
animalCry(a);
Dog dog = new Dog();
animalCry(dog); //出现多态,或者
Animal dog2 = new Dog(); //自动向上转型(编译器只认为这个dog是Animal 因此不能调用Dog类的方法)
animalCry(dog2); //打上动物标签的狗 仍然还是狗
//dog2.seeDoor(); 不能被执行 没有这个方法
Dog dog22 = (Dog)dog2; //向下转型
dog22.seeDoor(); //可以调用Dog类的方法
Cat cat = new Cat();
animalCry(cat);
}
//测试方法
static void animalCry(Animal animal){
animal.shut();
}
}
class Animal{
public void shut(){
System.out.println("动物叫了一声.");
}
}
class Dog extends Animal{
public void shut(){
System.out.println("狗叫了汪汪汪.");
}
public void seeDoor(){
System.out.println("狗看门..");
}
}
class Cat extends Animal{
public void shut(){
System.out.println("猫叫了喵喵喵.");
}
}**
一边学习一边补充。