zoukankan      html  css  js  c++  java
  • 子类构造器调用父类构造器的顺序问题

    一 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调用同类中的构造器,就会依次执行父类的多个构造器。

  • 相关阅读:
    多线程09-Lock和Condition
    多线程08-Callable和Future
    多线程07-线程池
    在linux环境下搭建java web测试环境(非常详细!)
    Linux下的环境部署和项目发布
    Linux下安装软件命令详解
    Linux下安装Tomcat服务器和部署Web应用
    monkey实战--测试步骤、常用参数、常规monkey命令
    如何做好回归测试
    Apache转发到Tomcat
  • 原文地址:https://www.cnblogs.com/ainima/p/6331652.html
Copyright © 2011-2022 走看看