美文网首页
子类构造方法中调用父类构造方法时,父类的构造方法会先执行,这会有

子类构造方法中调用父类构造方法时,父类的构造方法会先执行,这会有

作者: JAVA加油 | 来源:发表于2023-07-01 07:30 被阅读0次

子类构造方法中调用父类构造方法时,父类的构造方法会先执行,这会有什么影响?

当子类构造方法中调用父类构造方法时,父类的构造方法会先执行,这可能会影响父类和子类属性的初始化顺序。

在调用子类构造方法之前,Java会先调用父类的构造方法来初始化父类的属性。如果子类构造方法中调用了父类构造方法,那么父类的构造方法会先执行,然后才会执行子类的构造方法。这意味着在父类的构造方法执行期间,子类的属性还没有被初始化。

如果父类的构造方法中使用了子类的属性,那么在父类的构造方法中就不能访问子类的属性,因为它们还没有被初始化。这可能会导致程序出现错误或者异常。

例如,假设有如下的父类和子类:

public class Animal {    private String name;    public Animal(String name) {        this.name = name;        System.out.println("Animal构造方法执行了");}    public void eat() {        System.out.println(name + "正在吃饭...");}}public class Cat extends Animal {    private int age;    public Cat(String name, int age) {        super(name); // 调用父类的有参构造方法        this.age = age;        System.out.println("Cat构造方法执行了");}    public void printInfo() {eat();        System.out.println("名字:" + name + ",年龄:" + age);}}

在这个示例中,Animal类中定义了一个有参构造方法,用于初始化name属性。Cat类继承了Animal类并定义了一个age属性。在Cat类的构造方法中,使用 super 关键字调用了父类的有参构造方法来初始化name属性,然后初始化了子类的age属性。在这个例子中,我们在父类的构造方法中调用了 eat() 方法,这个方法依赖于name属性,但是在父类的构造方法中,子类的属性尚未被初始化,所以这里会出现NullPointerException异常。

因此,在编写构造方法时,应该注意构造方法的调用顺序和属性的初始化顺序,避免出现因属性未被初始化而导致的异常。

相关文章

  • Java中父子类的那些事

    Java中父子类的那些事 构造方法 1、子类构造方法执行时,都会先执行父类的构造方法,若没有显式地调用父类的构造方...

  • 牛客学习第二天

    子类继承父类,方法执行顺序: 先执行父类的静态方法再执行子类的静态方法然后父类的构造代码块、构造方法、子类的构造代...

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

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

  • Java 构造方法中的多态

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

  • 浅谈Java中的super和this

    super():代表父类对象,调用父类的构造方法,如果在子类的构造函数中调用该函数则必须放在第一行,该方法会将父类...

  • 子类继承父类函数

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

  • 在 Java 中定义一个不做事且没有参数的构造方法的作用

    Java 程序在执行子类的构造方法之前,如果没有用 super() 来调用父类特定的构造方法,则会调用父类中“没有...

  • Java super关键字及接口

    由于子类不能继承父类的构造方法,因此,要调用父类的构造方法,必须在子类的构造方法体的第一行使用 super() 方...

  • super关键字

    super关键字用来调用父类属性和方法。子类构造方法必须调用父类的构造方法,如果没有显示调用父类的构造方法,系统默...

  • java中构造方法的注意点

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

网友评论

      本文标题:子类构造方法中调用父类构造方法时,父类的构造方法会先执行,这会有

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