C#多态 重载 虚方法 重写

抽象类用abstract 修饰 同样方法用abstract修饰的就是抽象方法。

  • 抽象类不能实例化。

  • 抽象类可以包含抽象方法和抽象访问器。

  • 不能用 sealed 修饰符修饰抽象类,因为这两个修饰符的含义是相反的。 采用 sealed 修饰符的类无法继承,而 abstract修饰符要求对类进行继承。

     

    重载 overload修饰(参数的个数不一致,参数的类型不一致,方法名相同)与方法的返回类型无关,重载一般发生在同一个类里。

    重写(字面意思就是重新实现) Override 是对父类的方法进行实现,这个“重新设计”的的基础是方法名和参数完全一致,但是内部实现体不一样。


    重写一般发生在父类和子类之间,一般父类定义一个虚方法或抽象方法,子类根据具体情况“重写”其中的实现。

    override方法和 virtual方法必须具有相同的访问级别修饰符。

     

    虚方法用virtual修饰 ,它们可以在派生类中被重写(override)。例如,此方法可被任何继承它的类重写。

     

    virtual修饰符不能与 staticabstract,privateoverride修饰符一起使用

     

    const关键字用于修改字段或局部变量的声明。 它指定字段或局部变量的值是常数,不能被修改。

     

    sealed   当对一个类应用sealed 修饰符时,此修饰符会阻止其他类从该类继承。

     

    最后一个newvirtual/override的区别 看个例子(csdn的例子 我觉的写的很好!)

    new 用作修饰符时,new关键字可以在派生类中隐藏基类的方法,也就说在使用派生类的方法是调用的方法是New关键字新定义出来的方法,而不是基类的方法。在不使用New关键字来隐藏基类方法也是可以的,编译器会出现一个警告,提示如果有意去隐藏基类的方法,请使用New关键字修饰。 

    New和Override这两个关键字是互斥的。不可以同时使用。 

    Override关键字主要是提供派生类对基类方法的新实现,重写的基类方法必须和Override的方法具有相同的签名,此关键字不可以用于重写非虚方法和静态方法,与其配套使用的关键字是Virtual、abstract、Override。与此同时,Override方法还不可以修改Virtual方法的可访问性,Override方法和Virtual方法必须具有相同的访问修饰符,不能使用修饰符 new、static、virtual 或 abstract 来修改 override 方法。 

     

     class Program
        {
            static void Main(string[] args)
            {
                contact ct1 = new class1();
                contact ct2 = new class2();
                class2 sp = new class2();

                sp.prinf();
                ct1.prinf();
                ct2.prinf();
            }
        }

        abstract public class contact
        {
            public virtual void prinf()
            {
                Console.WriteLine("这是虚方法");
            }

        }

        public class class1 : contact
        {
            public override void prinf()
            {
                Console.WriteLine("这是个重写的新方法");
            }
        }

        public class class2 : contact
        {
            public new void prinf()
            {
                Console.WriteLine("这是另一个新的方法");
            }
        }

     

    结果:

    这是另一个新的方法;

    这是个重写的新方法

    这是虚方法

     

     

    一万年太久,只争朝夕 大丈夫处世 立功名 得富贵 就在今朝

    生活若是习惯了 就会消磨一个人的意志 失去上进心 最后变成了麻木的阿Q

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值