派生类声明
[类修饰符] class 派生类 :基类
派生类除了构造函数和析构函数,派生类继承了 基类的所有成员
class Program
{
static void Main(string[] args)
{
B bb = new B();
bb.afun();
}
class A
{
private int a;//私有成员 B类无法使用
protected int b;
public void afun() { }
}
class B :A
{
private int C;
public void bfun() { }
}
}
基类成员的可访问性
如果需要在派生类中隐藏某些基类的成员,可以在基类中将这些成员设置成private访问成员
按次序调用构造函数和析构函数
如果一个类是从一个基类派生出来的,那么在调用这个派生类的默认构造函数之前会调用基类的默认构造函数,调用的次序从最远的基类开始。析构函数是先销毁派生类
调用重载构造函数次序
public 派生原类(参数列表1):base(参数列表2)
static void Main(string[] args)
{
C bb1 = new C();
C bb = new C(1,2,3); }
class A
{
private int a;//私有成员 B类无法使用
public A()
{
Console.WriteLine("调用A类的构造函数");
}
public A(int x)
{
a = x;
Console.WriteLine("调用A类的重载构造函数");
}
~A()
{
Console.WriteLine("A:a={0}", a);
Console.Read();
}
}
class B : A
{
private int b;
public B()
{
Console.WriteLine("调用B类的构造函数");
}
public B(int x,int y):base( x)
{
b = y;
Console.WriteLine("调用B类的重载构造函数");
}
~B()
{
Console.WriteLine("B:b={0}", b);
}
}
class C : B
{
private int c;
public C()
{
Console.WriteLine("调用C类的构造函数");
}
public C(int x, int y,int z):base( x,y)
{
c = z;
Console.WriteLine("调用C类的重载构造函数");
}
~C()
{
Console.WriteLine("C:c={0}", c);
}
}
}