zoukankan      html  css  js  c++  java
  • Java父类调用被子类重写的方法

    https://blog.csdn.net/zhuoaiyiran/article/details/19489745
    1.如果父类构造器调用了被子类重写的方法,且通过子类构造函数创建子类对象,调用了这个父类构造器(无论显示还是隐式),就会导致父类在构造时实际上调用的是子类覆盖的方法(你需要了解java继承中的初始化机制)。

    例子:

    public abstract class Father {
        public Father() {
            display();
        }
     
        public void display() {
            System.out.println("Father's display");
        }    
    }
    public class Son extends Father {
     
        public Son() {
        }
     
        public void display() {
            System.out.println("Son's display");
        }
        
        public static void main(String[] args) {
            new Son();
        }
     
    }
    输出为:Son's display
     
    这种机制有优点,不过有时也存在问题。
    优点:通过继承相同的父类,初始化子类时,父类会调用不同子类的不同复写方法,从而实现多态性。
    缺点:如果在父类构造函数中调用被子类重写的方法,会导致子类重写的方法在子类构造器的所有代码之前执行,从而导致子类重写的方法访问不到子类实例变量的值,因为此时这些变量还没有被初始化。
  • 相关阅读:
    ansible tower
    gitlab说明书
    新建系统配置
    docker&k8s-配置/常用命令
    Winscp隧道实现-跳板机/跨机连接
    FDM, FVM, FEM
    批量处理文件
    未来的职业规划
    内心两大矛盾
    MATLAB在Linux下的安装方法(待尝试)
  • 原文地址:https://www.cnblogs.com/pomodoro/p/9488086.html
Copyright © 2011-2022 走看看