`
cakin24
  • 浏览: 1388072 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

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

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

0
1
分享到:
评论

相关推荐

    子类对象构建调用父类的构造方法

    程序中描述了子类对象构建调用父类的构造方法,以及类变量和实例变量创建的不同过程

    java中的继承(子类调用父类构造方法还不懂).doc

    - **调用父类构造器**:最重要的是,`super`可以用于在子类构造器中调用父类的构造器。这对于初始化父类的状态非常有用。 - **追溯父类**:`super`不仅可以用于直接父类,还可以追溯到更远的祖先类。 **2. 调用父类...

    java 子类对象赋值给父类对象的使用

    2. **构造器与初始化**:子类对象在创建时会先调用父类的构造器,确保父类的状态得到正确初始化,然后执行子类自己的构造逻辑。 3. **变量隐藏**:如果子类和父类有同名的实例变量,子类变量会“隐藏”父类变量。...

    子类调用抽象父类.zip

    在编程世界中,继承是...7. **构造函数调用**:子类可以使用`super`调用父类构造器。 以上就是关于“子类调用抽象父类”这一主题的主要内容,理解并熟练运用这些概念,可以帮助我们更好地设计和实现面向对象的程序。

    java 构造器的调用

    - 子类可以调用父类的构造器,使用`super`关键字,这通常是子类构造器的第一条语句。 - 如果子类没有明确调用超类构造器,编译器会默认调用超类的无参构造器(如果存在)。 - 例如: ```java class Parent { ...

    再次详细说明在继承中的程序执行顺序,子类与父类到底哪个先执行

    在Java中,如果子类没有显式调用父类的构造器,编译器会自动添加一个默认的`super()`调用,这将调用父类的无参构造器。如果父类有带参数的构造器,子类必须显式调用。 2. **初始化子类**: - 父类的构造器执行完毕...

    EnumTest--构造顺序:父类、类成员变量、子类.zip

    3. **子类构造器**:最后,执行枚举类自身的构造器。在Java中,枚举的构造器默认是私有的,不能从外部直接实例化。枚举实例是在枚举声明中通过列举的方式创建的,例如`public enum Color { RED, GREEN, BLUE }`。...

    JAVA经典继承与父类调用 geter、seter访问器 构造器

    在`Testoo.java`文件中,很可能包含了测试这些概念的代码,通过创建不同类型的对象,调用构造器初始化它们,然后通过getter和setter方法来访问和修改成员变量的值。这样的测试有助于验证类的设计是否正确,以及继承...

    Java面向对象(进阶)- super关键字的使用与子类对象实例化全过程

    在Java编程语言中,面向对象编程是核心特性之一。...同时,子类对象实例化的过程是先执行父类构造器,再执行子类构造器,保证了对象初始化的顺序。理解和掌握这些概念对于编写高效的Java代码至关重要。

    Java4Android 19_子类实例化过程

    如果父类没有无参构造器,那么在子类构造器中必须显式调用父类的有参构造器,使用super参数传递必要的值。 其次,子类构造器的执行顺序。当一个子类对象被创建时,构造器的调用顺序是:首先执行父类的构造器,然后...

    论JAVA继承机制中父类与子类的关系

    如果父类没有无参构造器,则必须在子类构造器中显式调用父类构造器,通常使用`super(参数列表);`。 - 如果子类中定义了与父类同名的成员变量,父类的成员变量将被隐藏。同样地,如果子类定义了与父类同名且具有相同...

    java 静态块实例块构造器调用

    在Java继承体系中,子类会继承父类的非私有成员,包括静态块、实例块和构造器。调用顺序如下: 1. **静态块的执行顺序**:首先,从父类到子类,按照定义的顺序依次执行静态块。这意味着父类的静态块先于子类的静态...

    构造器的解释.

    ### 构造器的解释与应用 #### 一、什么是构造器? 在面向对象编程语言中,构造器(Constructor)是一种特殊的方法...同时,了解子类构造器如何调用父类构造器也是十分重要的,这有助于更好地组织和管理类之间的关系。

    276.274.JAVA基础教程_面向对象(中)-super调用属性和方法(276).rar

    子类构造器在执行时,首先会调用父类的构造器来初始化父类的状态,然后才进行子类自身的初始化。 - `super`关键字通常用在子类构造器的第一行,以确保父类的构造器先被调用。 6. **访问限制** - `super`关键字...

    Java入门理解构造器

    - **使用`this`调用构造器**:在一个构造器内部,可以使用`this(参数列表)`来调用同一类中的另一个构造器。这种调用必须是构造器的第一条语句。 - **使用`super`调用父类构造器**:在一个构造器内部,可以使用`...

    继承与接口的含义以及其子类相关的含义

    如果父类成员有初始化器(初始化块),那么在子类构造器执行前,这些初始化器会被调用。 **成员变量的隐藏** 如果子类中定义了一个与父类同名的成员变量,这称为成员变量的隐藏。在子类内部,子类的成员变量会覆盖...

    基类子类虚函数的调用顺序问题

    这个规则称为构造器的初始化顺序。 然而,当我们在构造函数中调用虚函数时,情况会有所不同。由于构造期间对象尚未完全初始化,此时的虚函数调用遵循“静态绑定”(早绑定或编译时绑定),而不是通常的“动态绑定”...

    javase子类父类继承关系图解

    5. **父类的用户定义构造器**:如果在子类构造器中指定了父类的特定构造器,那么该构造器会被调用,执行其相应代码。 6. **子类的非静态初始化块**:接下来,子类的非静态初始化块被执行,用于初始化子类的实例变量...

    【IT十八掌徐培成】Java基础第04天-06.super-super()-this-this().zip

    此外,`this`也可以用来调用当前类的构造器,即`this(参数列表)`,这通常用于在子类构造器中调用父类构造器,以确保初始化过程的顺序。 其次,`super`关键字则用于引用父类的成员。当你在子类中需要访问父类的非...

    C#程序设计-3期(KC008) KC008110100021-C# 构造器和C++ 构造器是否相同?.docx

    C#提供的是继承链上的构造器调用,即子类构造器会自动调用父类的无参构造器,除非明确地通过`base(args)`调用其他父类构造器。 C++的析构器(Destructor)与C#的析构器(Finalizer)也是两个不同概念。C++的析构器...

Global site tag (gtag.js) - Google Analytics