C#中的虚方法与隐藏方法

虚方法

将一个基类函数声明为virtual,就可以在任何派生类中重写该函数。

class MyBaseClass{
    public virtual string VirtualMethod(){
        return "Method is called in base class."
        }
    }

在派生类中进行重写该函数时,需要使用override关键字显示声明

class MyDerivedClass : MyBaseClass{
    public override string VirtualMethod(){
        return "Method is called in derived class."
        }
    }

需要注意的是,当在子类中重写虚函数之后,不管在哪里进行调用,调用的都是重写后的方法(相当于原先的方法被重写后的方法给覆盖了)。

隐藏方法

如果签名相同的方法在基类和派生类中都进行了声明,但是该方法并没有分别声明virtual和override,这是派生类就会隐藏基类方法(可以使用new关键字进行声明)
一个方法的签名即为一个方法的定义,例如返回值、参数、方法名等。

隐藏和重写的区别:
隐藏:只是将父类中的方法给隐藏了,实际这个方法还存在。
重写:将原先父类中的方法完全重写了,原先的方法是不存的了。

//隐藏方法:如果使用子类声明的对象,则调用隐藏方法会调用子类的;如果使用父类声明的对象,则会调用父类中的隐藏方法。
//父类:Enemy
//子类:Boss
//Move()是一个隐藏方法

class Enemy{
    public string Move(){
        return "This is Move from Enemy!";
        }
    }

class Boss : Enemy{
    public new string Move(){
        return "This is Move from Boss!";
        }
    }

Boss boss = new Boss();
boss.Move();    //This is Move from Boss!

Enemy boss = new Boss();
boss.Move();    //This is Move from Enemy!

//构造一样,但是声明不一样,调用的隐藏方法也是不一样的。

一般不去使用隐藏方法,因为很容易引起方法调用的混乱。

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值