黑马程序员技术交流社区

标题: 多态的一个问题 [打印本页]

作者: a469517790    时间: 2017-1-14 21:53
标题: 多态的一个问题
多态中,对成员方法,编译看左边,运行看右边,解释是动态绑定。

什么是动态绑定,为什么要动态绑定啊?求大神解释


作者: guyouzhong    时间: 2017-1-15 01:01
解耦合,增加扩展性

作者: If_091021    时间: 2017-1-17 22:23
动态绑定就是在运行时自动地选择调用哪个方法的现象。
package JavaTest;
/**
*
* 员工类Employee,定义了getSalary方法获取工资
* 经理类Manager 重写了getSalary方法,因为经理不仅有工资还有奖金
*/

public class Binging {
        public static void main(String[] args) {
                //定义一个员工类的数组
                Employee[] emp = new Employee[3];
                emp[0] = new Employee(4000);
                //加入一个经理类对象
                emp[1] = new Manager(6000,500);
                emp[2] = new Employee(3000);
               
                //对象变量e会自动根据自身的类型调用相应的方法,员工类调用员工的getSalary方法,经理类调用经理的getSalary方法。
                //这个现象就叫是动态绑定
                for(Employee e:emp){
                        System.out.println(e.getSalary());
                }
        }
}
//员工类
class Employee{
        //工资
        private double salary;
       
        public Employee(double salary){
                this.salary = salary;
        }
        public double getSalary(){
                return this.salary;
        }
}

class Manager extends Employee{
        //奖金
        private double bonus;
       
        public Manager(double salary,double bonus){
                super(salary);
                this.bonus = bonus;
        }
       
        public double getSalary(){
                return super.getSalary()+this.bonus;
        }
}




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2