C#中的virtual关键词的解释

  • 之前自己一直学的java,最近进新公司,要开始转c#.net了,学了一段时间发现其实c#和java有很多类似的地方,但是还是有很多不同的地方,比如c#这里的重写,需要加一些关键词,感觉没有java方便,也许也有他的方便之处吧,可能我刚学没有发现。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Tested
{
   public class TestSender
    {
        static void Main(string[] args)
        {
            A a1 = new B();
            A a2 = new C();
            a1.Send();
            a2.Send();
            Console.ReadKey(); // 为了防止程序执行完直接结束,需要加一个这种方法,这个方法作用其实是让你按任意键,java不需要,
        }
    }
    public class A
    {
        public virtual void Send() //  C#中要重写的方法 需要加virtual或者abstract关键词
        {
            Console.WriteLine("A");
        }
    }
    public class B : A
    {
        public override void Send()// 派生类中重写的方法需要加override关键词 
        {
            Console.WriteLine("B");
        }
    }
    public class C : A
    {
        public new void Send()   // 派生类中重写的方法可以使用new关键词 他的作用是隐藏该方法 
        {
            Console.WriteLine("C");
        }
    }
    /* 
        输出结果为:B
                  A
     */
   
}

你可能感兴趣的:(c#基础)