C# 中 类和类中方法的继承关系abstract sealed virtual override 和 new

1、abstract 修饰符可以和类、方法、属性、索引器及事件一起使用(待实现)。修饰类时表示抽象类,只能作为其他类的基类,不能被实例化,可以包括抽象方法和抽象访问器,从抽象类派生的非抽象类必须包括继承的所有抽象方法和抽象访问器的实现;

 

2、sealed不能修饰抽象类,修饰非抽象类时表示该类不能被继承;sealed override可以一起修饰虚方法或虚属性,不可单独修饰虚方法或虚属性;

 

3、virtual只能修饰基类的方法和属性(表示继承类可重写),不能修饰类(C# 类不允许多重继承,不存在虚基类,接口可多重继承),不能与static   abstract   override修饰符一起使用;

 

4、override,继承类的基类有虚属性和方法时,可利用override重写属性和方法,和基类有继承关系;(用基类申明新实例时,虚方法的实现优先使用继承类的重写方法)

 

5、new,可以让继承类实现对基类同名方法的覆盖,申明是一个新方法,和基类没有继承关系。(用基类申明新实例时,虚方法的实现优先使用有继承关系的方法。)

 

class program
{
    static void Main()
    {
        A aa = new A();
        aa.Function();    //输出("this is A!")

        A bb = new B();
        bb.Function();    //输出("this is B!")

        A cc = new C();
        cc.Function();    //输出("this is B!")

        A dd = new D();
        dd.Function();    //输出("this is B!")
    }
}



class A
{
    public virtual void Function()
    {
        Console.WriteLine("this is A!");
    }
}



class B:A
{
    public override void Function()
    {
        Console.WriteLine("this is B!");
    }
}


class C:B
{

}


class D:B
{
    public new void Function()
    {
        Console.WriteLine("this is D!");
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值