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
     
    这种机制有优点,不过有时也存在问题。
    优点:通过继承相同的父类,初始化子类时,父类会调用不同子类的不同复写方法,从而实现多态性。
    缺点:如果在父类构造函数中调用被子类重写的方法,会导致子类重写的方法在子类构造器的所有代码之前执行,从而导致子类重写的方法访问不到子类实例变量的值,因为此时这些变量还没有被初始化。
  • 相关阅读:
    hiveserver2 with kerberos authentication
    python Basic usage
    python Quicksort demo
    Python HeapSort
    mrunit for wordcount demo
    CCDH证书
    Hadoop question list
    Hadoop Yarn core concepts
    Hadoop Resource
    Hadoop could not find or load main class
  • 原文地址:https://www.cnblogs.com/pomodoro/p/9488086.html
Copyright © 2011-2022 走看看