C# 抽象类的使用

来源:互联网 发布:列宁格勒号驱逐舰数据 编辑:程序博客网 时间:2024/05/21 16:26
abstract class myFirst
    {
        int value_myFirst;
        public myFirst(int f)
        {
            value_myFirst = f;
        }
        //抽象方法没有方法体,以分号结尾
        public abstract void f1();
        public void f2()
        {
            System.Console.WriteLine("myFirst.f2()!");
        }
        public virtual void f3()
        {
            System.Console.WriteLine("myFirst.f3()!");
        }
    }
    class mySecond : myFirst
    {
        int value_mySecond;
        public mySecond(int s)
            : base(s)
        {
            value_mySecond = s;
        }
        //覆盖基类的抽象方法
        public override void f1()
        {
            System.Console.WriteLine("mySecond.f1()!");
        }
        //覆盖基类的一般方法
        public new void f2()
        {
            System.Console.WriteLine("mySecond.f2()!");
        }
        //覆盖基类的虚方法
        public override void f3()
        {
            System.Console.WriteLine("mySecond.f3()!");
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            //抽象类和接口不能声明对象
            //myFirst mf = new myFirst(1);
            mySecond ms = new mySecond(2);
            ms.f1();
            ms.f2();
            ms.f3();
            //这里向上转型采用强类型转换的方式
            ((myFirst)ms).f1();
            ((myFirst)ms).f2();
            ((myFirst)ms).f3();
        }
    }
原创粉丝点击