namespace t1
{
public abstract class myClass //不能被实例化
{
public myClass() //总会被调用,否则无法创建带参构造函数
{
MessageBox.Show("基类的无参构造函数!");
}
public myClass(int a) //要调用myClass(int a) 则必须“显式调用”,即在派生类中写成:public test(int a):base(a)
{
MessageBox.Show("{基类a!}");
}
}
public class test : myClass
{
public test()
{
MessageBox.Show("派生类的无参构造函数!");
}
public test(int a)
{
MessageBox.Show("{派生类a!}");
}
}
}
{
public abstract class myClass //不能被实例化
{
public myClass() //总会被调用,否则无法创建带参构造函数
{
MessageBox.Show("基类的无参构造函数!");
}
public myClass(int a) //要调用myClass(int a) 则必须“显式调用”,即在派生类中写成:public test(int a):base(a)
{
MessageBox.Show("{基类a!}");
}
}
public class test : myClass
{
public test()
{
MessageBox.Show("派生类的无参构造函数!");
}
public test(int a)
{
MessageBox.Show("{派生类a!}");
}
}
}
test t1=new test();
则输出: 基类的无参构造函数!
派生类的无参构造函数!
test t2=new test(1);
则输出: 基类的无参构造函数!
派生类a!
若写成如下:显示调用
public test(int a):base(a)
{
MessageBox.Show("{派生类a!}");
}
test t3=new test(1);
则输出: 基类a!
派生类a!
abstract用来修饰抽象类,表示该类只能作为父类被用于继承,而不能进行对象实例化。