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
     
    这种机制有优点,不过有时也存在问题。
    优点:通过继承相同的父类,初始化子类时,父类会调用不同子类的不同复写方法,从而实现多态性。
    缺点:如果在父类构造函数中调用被子类重写的方法,会导致子类重写的方法在子类构造器的所有代码之前执行,从而导致子类重写的方法访问不到子类实例变量的值,因为此时这些变量还没有被初始化。
  • 相关阅读:
    echarts使用
    Nutch插件系统
    linux命令总结
    linux命令行快捷键
    每日一笔
    Hadoop参数调优
    rsync用于同步目录
    hadoop遇到的问题(汇总)
    linux历史命令
    hadoop 编译代码及运行
  • 原文地址:https://www.cnblogs.com/pomodoro/p/9488086.html
Copyright © 2011-2022 走看看