• 子类构造器调用父类构造器的顺序问题


    一 super调用父类构造器

    • 子类构造器总会调用父类构造器。
    • 如果子类构造器没有显示使用super调用父类构造器,子类构造器默认会调用父类无参构造器。
    • 创建一个子类实例时,总会调用最顶层父类构造器。

    二 构造器调用顺序示例

    1 代码示例

    class Creature
    {
    	public Creature()
    	{
    		System.out.println("Creature无参数的构造器");
    	}
    }
    class Animal extends Creature
    {
    	public Animal(String name)
    	{
    		System.out.println("Animal带一个参数的构造器,"
    			+ "该动物的name为" + name);
    	}
    	public Animal(String name , int age)
    	{
    		// 使用this调用同一个重载的构造器
    		this(name);
    		System.out.println("Animal带两个参数的构造器,"
    			+ "其age为" + age);
    	}
    }
    public class Wolf extends Animal
    {
    	public Wolf()
    	{
    		// 显式调用父类有两个参数的构造器
    		super("大灰狼", 3);
    		System.out.println("Wolf无参数的构造器");
    	}
    	public static void main(String[] args)
    	{
    		new Wolf();
    	}
    }

    2 运行结果

    Creature无参数的构造器

    Animal带一个参数的构造器,该动物的name为大灰狼

    Animal带两个参数的构造器,其age为3

    Wolf无参数的构造器

    3 结果分析

    从运行结果来看,创建任何对象总是从该类所在继承树最顶层的构造器开始执行,然后依次向下执行,最后才执行本类的构造器,如果其个父类通过this调用同类中的构造器,就会依次执行父类的多个构造器。

  • 相关阅读:
    集训队日常训练20180518-DIV1
    集训队日常训练20180513-DIV1
    python类的使用与多文件组织
    性能指标
    python调用.so
    动态链接库的使用
    python读写xml文件
    使用python读取文本中结构化数据
    python画图
    numpy及scipy的使用
  • 原文地址:https://www.cnblogs.com/ainima/p/6331652.html
Copyright © 2020-2023  润新知