美文网首页
当在父类构造数中调用子类重写过的方法时

当在父类构造数中调用子类重写过的方法时

作者: apollooo | 来源:发表于2018-05-26 00:02 被阅读0次

当在父类构造数中调用子类重写过的方法时,到底会调用父类的方法呢还是子类的方法呢?

public class Super {
    public Super(){
        this.m();
    }
    public void m(){}
}
public class Sub extends Super{
    private final Date date;
    Sub(){
        date=new Date();
    }
    @Override
    public void m(){
        System.out.println(date);
    }
    public  static void main(String[] a){
        Super s=new Sub();
        s.m();
    }
}

运行一下

null
Fri May 25 23:54:28 CST 2018

Process finished with exit code 0

可以看出输出了又两行。所以当子类实例化时调用父类的构造函数中含有子类重写过的方法时候依然会调用子类的方法而不会调用父类的方法。
在这里第一行之所以打印NULL,是因为当调用父类构造函数时子类中的date对象并没有被实例化。

代码出自《Effective Java》书的第69页,第80个例子。

相关文章

  • 当在父类构造数中调用子类重写过的方法时

    当在父类构造数中调用子类重写过的方法时,到底会调用父类的方法呢还是子类的方法呢? 运行一下: 可以看出输出了又两行...

  • c#基础

    继承 当在主函数中new了一个子类的对象时,子类对象的初始化会先调用父类的无参构造方法,再调用子类的当前构造方法。...

  • Java类中不做事且没有参数的构造方法的作用

    Java在执行子类的构造方法时,假如没有用super()来调用父类特定的构造方法,则会默认调用父类中没有参数的构造...

  • 第十五天学习Java(面向对象的多态性)

    2.1子类对象的创建过程 实例化子类对象的过程 调用子类的构造方法中,先调用了父类的构造方法,默认调用的父类的无参...

  • Java 构造方法中的多态

    类的实例化顺序是先实例化父类在实例化子类,也就是先调用父类的构造方法,再调用子类的构造方法,如果在构造方法中调用其...

  • 继承和构造

    子类构造器的特点: 所有的子类在构造时必须,一定会调用父类的构造方法,若没有显式地调用父类构造方法,那么系统默认调...

  • 子类继承父类函数

    如果在子类中需要父类的构造方法就需要显式地调用父类的构造方法,或者不重写父类的构造方法。子类不重写 init,实例...

  • 《Oracle Java SE编程指南》13-03:构造器和继承

    内容导航: 前言 1、构造方法与继承 2、继承中构造方法的调用 3、子类调用父类构造方法的原因 4、子类构造方法的...

  • java中构造方法的注意点

    默认的子类的构造方法中会自动调用父类的无参构造方法,如果手动调用有参的父类的构造方法的话,子类就不会在自动调用父类...

  • super

    1.super 存在于父类和子类之间的继承 ,当子类调用构造方法的时候 在类的构造方法默认调用父类的构造方法。在构...

网友评论

      本文标题:当在父类构造数中调用子类重写过的方法时

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