多态性,是面向对象中最重要的概念,在java中有两种体现:
1.方法的重载(overload)和重写(overwrite).
2.对象的多态性------可以直接应用在抽象类和接口上。
java引用变量有两个类型:编译时类型和 运行时类型。编译时类型由声明该变量时使用的类型决定,运行时类型由实际赋给该变量的对象决定。
若编译时类型和运行时类型不一致,就会出现多态(polymorphism)
多态性指的是什么?可以理解为一个事物的多种表现形态。
一 1)方法的重载与重写 2)子类对象的多态性
二 子类对象的多态性使用的前提:1)要有类的继承 2)要有子类对父类方法的重写。
三 程序运行分为编译状态和运行状态
对于多态性来说,编译时,“看左边”,将此引用变量理解为父类的类型。
运行时,“看右边”,关注于真正对象的实体:子类的对象。那么执行的方法就是子类重写的。
//子类对象的多态性:父类的引用指向子类对象
Person p1 =new Man();//向上转型
//虚拟方法调用:通过父类的引用指向子类的对象实体,当调用方法时,实际执行的是子类重写父类的方法。
p1.eat();
p1.walk();
动态类型绑定