Java中多态定义是发送消息给某个对象,让该对象自行决定响应何种行为。
通过将子类对象引用赋值给父类对象引用变量来实现动态方法调用。
java 的这种机制遵循一个原则:当父类对象引用变量引用子类对象时,被引用对象的类型而不是引用变量的类型决定了调用谁的成员方法,但是这个被调用的方法必须是在父类中定义过的,也就是说被子类覆盖的方法。
举例:人在工作上不同的表现行为,在餐厅是服务员,在学校是老师,即在不同的地方做出不同的表现行为。
代码实现:
- /**
- * Person
- * @author Administrator
- *
- */
- public abstract class Person extends Object {
- public void working() {
-
- }
- }
- /**
- * Teacher
- * @author Administrator
- *
- */
- public class Teacher extends Person{
-
- @Override
- public void working() {
- System.out.println("开始教书!");
- }
- }
- /**
- * Waiter
- * @author Administrator
- *
- */
- public class Waiter extends Person{
- @Override
- public void working() {
- System.out.println("开始接待客人!");
- }
-
- public static void main(String[] args) {
- Person teacher = new Teacher();
- Person waiter = new Waiter();
- working(teacher);//开始开始教书
- working(waiter); //输出开始接待客人
-
- }
-
- public static void working(Person person) {
- person.working();
- }
- }
复制代码 上面的代码提现了人在不同的工作环境不同的表现,假如public static void working(Person person) 是你的上级领导调用你的方法,他不需要知道你是做什么工作的,你自己知道做什么,做出什么响应,即让该对象自行决定响应何种行为。
多态条件:
1:继承
2:重写
3:父类引用指向字类对象
我们为什么要多态呢,在程序的可维护性和可扩展性大大的提供,本是一物,只是在不同的环境做出不同的响应,我们程序没有必要为不同的环境编写不同的方法,具体的响应又具体的环境类去实现。
|