子类继承父类时实例化子类的执行顺序
2008-08-02 15:55
204 查看
一个类继承一个父类时,当实例化子类的时候,子类的初始化顺序是这样的:
1、如果子类中有字段,则先初始化子类的字段。
2、初始化基类,基类如果存在字段,则先初始化字段,再执行构造方法。
3、执行子类的构造方法。
说白了就是:
先子类字段初始化
然后父类字段初始化
再执行父类构造函数
最后执行子类构造函数
例如以下的程序:
using System;
namespace ConsoleApplicationTest
{
class Employee
{
public Employee(string s)
{
Console.WriteLine("Employee constructor: {0}", s);
}
}
class Base
{
readonly Employee baseEmployee = new Employee("Base initializer");
public Base()
{
Console.WriteLine("Base constructor");
}
}
class Derived : Base
{
readonly Employee derivedEmployee = new Employee("Derived initializer.");
public Derived()
{
Console.WriteLine("Derived constructor");
}
}
class Program
{
static void Main(string[] args)
{
new Derived();
}
}
}
执行的结果是:
Employee constructor: Derived initializer.
Employee constructor:Base initializer
Base constructor
Derived constructor
1、如果子类中有字段,则先初始化子类的字段。
2、初始化基类,基类如果存在字段,则先初始化字段,再执行构造方法。
3、执行子类的构造方法。
说白了就是:
先子类字段初始化
然后父类字段初始化
再执行父类构造函数
最后执行子类构造函数
例如以下的程序:
using System;
namespace ConsoleApplicationTest
{
class Employee
{
public Employee(string s)
{
Console.WriteLine("Employee constructor: {0}", s);
}
}
class Base
{
readonly Employee baseEmployee = new Employee("Base initializer");
public Base()
{
Console.WriteLine("Base constructor");
}
}
class Derived : Base
{
readonly Employee derivedEmployee = new Employee("Derived initializer.");
public Derived()
{
Console.WriteLine("Derived constructor");
}
}
class Program
{
static void Main(string[] args)
{
new Derived();
}
}
}
执行的结果是:
Employee constructor: Derived initializer.
Employee constructor:Base initializer
Base constructor
Derived constructor
相关文章推荐
- 子类继承父类时实例化子类的执行顺序
- 子类A继承父类B, A a = new A(); 则父类B构造函数、父类B静态代码块、父类B非静态代码块、子类A构造函数、子类A静态代码块、子类A非静态代码块 执行的先后顺序是?
- C++中子类继承父类构造器和析构器的执行顺序
- OO 中的继承分析:主要分析在编译和运行过程中 子类、父类 的字段和方法以及实例化时候在内存中分配 和 执行的先后,以及两个原则
- JAVA继承关系中父类子类代码执行顺序
- java中子类继承父类程序执行顺序问题
- java中子类继承父类程序执行顺序
- 继承中父类子类初始化执行顺序
- Java子类继承父类,静态代码块、普通代码块、构造代码块的执行顺序
- java中子类继承父类程序执行顺序问题
- 子类继承父类,那么各代码块的执行顺序为:
- Java继承中父类子类构造方法、静态代码块、非静态代码块的执行顺序
- 子类继承父类的实例化顺序
- Java子类继承父类,构造方法的执行顺序问题
- java父类子类中静态块非静态块构造方法的执行顺序和继承
- java中子类继承父类程序执行顺序问题
- 子类继承父类中的static模块、构造方法执行顺序及java多态性
- java中子类继承父类程序执行顺序
- 当子类继承父类时,构造块,静态块,静态方法的执行顺序
- Java 中子类继承父类,执行顺序