c#方法重载和方法重写和方法隐藏


c#方法重载和方法重写和方法隐藏


1. 方法重载(Method Overloading)


方法重载允许在同一个类中定义多个同名方法,但这些方法的参数列表必须不同(参数的数量、类型或顺序至少有一个不同)

class MathOperations
{
    public int Add(int a, int b)
    {
        return a + b;
    }
 
    public double Add(double a, double b)
    {
        return a + b;
    }
}

2. 方法重写(Method Overriding)


方法重写发生在派生类中,允许派生类提供一个特定于其自身的方法实现,该方法与基类中的方法具有相同的签名。使用override关键字来标记重写的方法,并用virtual或abstract关键字标记基类中的方法。

class BaseClass
{
    public virtual void Display()
    {
        Console.WriteLine("Base class method");
    }
}
 
class DerivedClass : BaseClass
{
    public override void Display()
    {
        Console.WriteLine("Derived class method");
    }
}

3. 方法隐藏(Method Hiding)


方法隐藏也发生在派生类中,但不是基于继承的规则,而是通过在派生类中定义一个与基类中同名的方法来实现的 (使用new关键字隐藏基类中的方法)。隐藏的方法在基类中不是virtual或abstract的。当调用隐藏的方法时,总是调用派生类中的版本,即使是通过基类引用来调用。

class BaseClass
{
    public void Show()
    {
        Console.WriteLine("Base class method");
    }
}
 
class DerivedClass : BaseClass
{
    new public void Show() // 使用new关键字隐藏基类中的方法
    {
        Console.WriteLine("Derived class method");
    }
}

**

4. 总结:

**
方法重载:在同一类中定义多个同名方法,参数列表不同。
方法重写:在派生类中提供基类中方法的特定实现,使用override关键字。适用于基于继承的场景。
方法隐藏:在派生类中定义一个与基类中同名的方法,但不使用override关键字。适用于完全不希望基类的该方法在派生类中被调用的情况。通常不推荐使用,因为它可能导致代码难以理解和维护。更好的选择是通过方法重写来实现多态性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CSharp笔记记录

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值