抽象类

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!}");
        }
    }
}

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用来修饰抽象类,表示该类只能作为父类被用于继承,而不能进行对象实例化。


 

原文地址:https://www.cnblogs.com/perfect/p/1207673.html