多态

作者: carrot_4d8d | 来源:发表于2018-07-16 11:13 被阅读0次

    一个对象变量可以指示多种实际类型的现象称为多态;在运行过程中能够自动选择调用哪个方法的现象称为动态绑定。

    • 基本概念

    继承层次:由一个公共超类派生出来的所有的类的集合称为继承层次;

    继承链:从某个特定子类出发到其祖先的路径称为继承链。

    • 对象变量是多态的

    置换法则:一个父类变量可以引用子类对象;

    例如:

    Manager boss = new Manager("Carl Cracker", 80000, 1987, 12, 15);
    
    Employee[] staff = new Employee[3];
    staff[0] = boss;                //多态
    staff[1] = new Employee("Harry Hacker", 50000, 1989, 10, 1);
    staff[2] = new Employee("Tommy Tester", 40000, 1990, 3, 15);
    

    此时编译器将staff[0]看作Employee,若调用Manager方法,则会报错,如下:

    staff[0].setBonus(5000);        //error
    
    • 对象引用

    超类变量可以引用子类对象;

    子类变量不能引用超类对象,因为子类方法可能多于超类,若对超类调用了子类才有的方法,必然不合理;

    超类数组引用子类数组,而不需要强制转换;

    相关文章

      网友评论

          本文标题:多态

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