美文网首页
关于继承与多态

关于继承与多态

作者: mark_x | 来源:发表于2019-09-26 17:11 被阅读0次

    Manager类继承自Employee类。
    创建子类Manager类的实例对象boss:

    Manager boss = new Manager("Carl Cracker", 80000,1987, 12 , 15) ;
    boss.setBonus(5000) ;
    

    下面定义一个包含 3 个雇员的数组,将经理和雇员都放到数组中:

    Employee[] staff = new Employee[3];
    staff [0] = boss;
    staff [1] = new Employee("Harry Hacker", 50000, 1989, 10, 1);
    staff [2] = new Employee("Tony Tester", 40000, 1990, 3, 15);
    // 输出每个人的薪水:
    for (Employee e : staff){
            System.out.println(e.getName() + " " + e.getSalary());
    }
    
    运行这条循环语句将会输出下列数据:
    Carl Cracker 85000.0
    Harry Hacker 50000.0
    Tommy Tester 40000.0
    

    这里的 staff[1] 和 staff[2] 仅输出了基本薪水,这是因为它们对应的是Employee 对象,而 staff[0] 对应的是 Manager 对象, 它的 getSalary 方法将奖金与基本薪水加在了一起。需要提到的是,e.getSalary()调用能够确定应该执行哪个 getSalary 方法。请注意, 尽管这里将 e 声明为 Employee 类型,但实际上 e 既可以引用 Employee 类型的对象,也可以引用 Manager 类型的对象。

    当 e 引用 Employee 对象时,e.getSalary() 调用的是 Employee 类中的 getSalary 方法;当e 引用 Manager 对象时,e.getSalary( ) 调用的是 Manager 类中的 getSalary 方法。虚拟机知道e 实际引用的对象类型,因此能够正确地调用相应的方法。

    一个对象变量(例如, 变量 e ) 可以指示多种实际类型的现象被称为多态( polymorphism)。在运行时能够自动地选择调用哪个方法的现象称为动态绑定(dynamic binding。)

    相关文章

      网友评论

          本文标题:关于继承与多态

          本文链接:https://www.haomeiwen.com/subject/pxvkuctx.html