zoukankan      html  css  js  c++  java
  • <EffectiveJava>读书笔记--01继承的使用注意

    1, 父类的构造器方法中不能调用能够被子类重写的方法.

      分析:

        当初始化一个子类时, 首先要初始化父类, 即调用父类的构造方法;

        如果父类的构造方法中调用了可被重写的其它方法, 那么此时调用的其实是该子类中重写的方法;

        因此子类还没有初始化, 所以可能会造成一些问题.

        示例代码如下:

        父类:

    public class Father1 {
        public Father1() {
            overRide1();
        }
    
        public void overRide1(){
            System.out.println("父类的成员方法..................................");
        }
    }

    子类:

    public class Son1 extends Father1 {
    
        private final Date date;
        public Son1() {
            date = new Date();
        }
    
        @Override
        public void overRide1() {
            System.out.println(date);
        }
    
        public static void main(String[] args) {
            Son1 son1 = new Son1();
            son1.overRide1();
        }
    }

    如果运行子类的main方法, 那么控制台的输出的结果其实是:

    null
    Mon Apr 10 12:55:48 CST 2017

    说明父类初始化时, 构造方法中调用的是子类的overRide1方法;

  • 相关阅读:
    拥有最多糖果的孩子
    求1+2+…+n
    网络-中间代理
    Header中的Referer属性表示
    ios13.4post请求出现网错错误 network err
    10.8&10.10
    9.23&9.27
    9.16&9.19
    校内模拟赛划水报告(9.9,9.11)
    男人八题 划水题解
  • 原文地址:https://www.cnblogs.com/wyisprogramming/p/6688715.html
Copyright © 2011-2022 走看看