美文网首页
除了显式调用父类的构造方法,还有哪些方式可以初始化父类的属性?

除了显式调用父类的构造方法,还有哪些方式可以初始化父类的属性?

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

除了显式调用父类的构造方法,还有哪些方式可以初始化父类的属性?

除了显式调用父类的构造方法,还可以通过以下两种方式来初始化父类的属性:

在父类中提供一个无参构造方法,然后在子类中调用父类的无参构造方法来初始化父类的属性。

例如:

class Animal {    private String name;    public Animal() {        this.name = "无名氏";}    public Animal(String name) {        this.name = name;}    public String getName() {        return name;}}class Dog extends Animal {    private int age;    public Dog(String name, int age) {        super(name); // 调用父类的有参构造方法        this.age = age;}    public void printInfo() {        System.out.println("名字:" + super.getName() + ",年龄:" + age);}}public class Test {    public static void main(String[] args) {        Dog dog1 = new Dog("旺财", 3);dog1.printInfo();        Dog dog2 = new Dog();dog2.printInfo();    }}

在这个示例中,Animal类中提供了一个无参构造方法,用于初始化name属性。在Dog类的构造方法中,使用 super 关键字调用父类的有参构造方法来初始化父类的属性name。在main()方法中,创建两个Dog对象并分别调用这些对象的printInfo()方法,输出名字和年龄。其中,第二个Dog对象调用了父类的无参构造方法来初始化name属性。

在父类中提供一个默认值,然后在子类中通过修改父类属性的值来初始化父类的属性。

例如:

class Animal {    private String name = "无名氏";    public String getName() {        return name;}}class Dog extends Animal {    private int age;    public Dog(String name, int age) {        super(); // 调用父类的无参构造方法        super.name = name; // 修改父类属性的值        this.age = age;}    public void printInfo() {        System.out.println("名字:" + super.getName() + ",年龄:" + age);}}public class Test {    public static void main(String[] args) {        Dog dog = new Dog("旺财", 3);dog.printInfo();    }}

在这个示例中,Animal类中定义了一个默认值为"无名氏"的name属性。在Dog类的构造方法中,先调用父类的无参构造方法来初始化父类的属性name,然后修改父类属性的值来达到初始化的目的。在main()方法中,创建一个Dog对象并调用这个对象的printInfo()方法,输出名字和年龄。

需要注意的是,这种方法虽然能够初始化父类的属性,但是修改父类的属性可能会影响到其他子类对象的状态,因此需要谨慎使用。最好的方式还是在子类中显式调用父类的构造方法来初始化父类的属性。

相关文章

  • 子类父类初始化流程

    父类子类在初始化的是执行的流程①子类构造器会隐式调用父类的无参构造方法,如果子类显式利用super调用了父类的有参...

  • 子类继承父类函数

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

  • python super 使用

    一个类中可以显式的调用父类的方法或初始化方法,也可以隐式的调用方法或初始化。 隐式:class A(object)...

  • Python 子类继承父类构造函数说明

    Python 子类继承父类的两种写法: 如果在子类中需要父类的构造方法就需要显式地调用父类的构造方法,或者不重写父...

  • super

    注意:如果子类构造方法中没有显式调用父类构造方法,而父类又没有无参的构造方法,则编译出错。

  • super关键字

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

  • 继承和构造

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

  • js 继承

    构造函数继承 类式继承是在函数对象内调用父类的构造函数,使得自身获得父类的方法和属性。call和apply方法为类...

  • 父子类构造方法

    子类不能继承父类的构造方法,只能调用 三种情况说明:1、父类中没有显式定义任何构造方法,此时父类中实际有一个默认的...

  • Java中父子类的那些事

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

网友评论

      本文标题:除了显式调用父类的构造方法,还有哪些方式可以初始化父类的属性?

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