C#派生类的构造函数
用派生类声明对象,(初始化)调用构造函数,会调用两次。先调用父类中构造函数,再调用子类构造函数。
上代码:
namespace _020_派生类的构造函数
{
class BaseClass //***********************父类******************************//
{
int x;
public BaseClass() { //父类无参构造函数
Console.WriteLine("x的值是" + x);
Console.WriteLine("父类无参构造函数被调用");
Console.WriteLine();
}
public BaseClass(int x) { //父类有参构造函数
this.x = x;
Console.WriteLine("x的值是" + x);
Console.WriteLine("父类有参构造函数被调用");
Console.WriteLine();
}
}
}
{
class BaseClass //***********************父类******************************//
{
int x;
public BaseClass() { //父类无参构造函数
Console.WriteLine("x的值是" + x);
Console.WriteLine("父类无参构造函数被调用");
Console.WriteLine();
}
public BaseClass(int x) { //父类有参构造函数
this.x = x;
Console.WriteLine("x的值是" + x);
Console.WriteLine("父类有参构造函数被调用");
Console.WriteLine();
}
}
}
namespace _020_派生类的构造函数
{
class DreivedClass:BaseClass //***********************子类继承父类******************************//
{
int y;
public DreivedClass() { //子类无参构造函数
Console.WriteLine("y的值是" + y);
Console.WriteLine("子类的无参构造函数被调用");
Console.WriteLine();
}
public DreivedClass(int y) //子类有参构造函数
{
this.y = y;
Console.WriteLine("y的值是" + y);
Console.WriteLine("子类的有参构造函数被调用");
Console.WriteLine();
}
public DreivedClass(int x,int y):base(x)
{
this.y = y;
Console.WriteLine("y的值是" + y);
Console.WriteLine("子类的有参构造函数被调用");
Console.WriteLine();
}
}
}
namespace _020_派生类的构造函数
{
class Program
{
static void Main(string[] args)
{
DreivedClass d1 = new DreivedClass(); //无参
DreivedClass d2 = new DreivedClass(1); //1参
DreivedClass d3 = new DreivedClass(1, 2); //2参
Console.ReadKey();
}
}
}
{
class Program
{
static void Main(string[] args)
{
DreivedClass d1 = new DreivedClass(); //无参
DreivedClass d2 = new DreivedClass(1); //1参
DreivedClass d3 = new DreivedClass(1, 2); //2参
Console.ReadKey();
}
}
}
运行结果: