【C#学习】——重写 覆盖 重载

重写(override):

       从字面就可以知道,它是覆盖了一个方法并且对其重写,以求达到不同的作用。其实重写并不改变父类的方法代码。父类中用关键字Virtual修饰的方法,叫做虚方法。在子类中可以使用同名的方法,用关键字Override声明即可,这就叫做方法的“重写”。(相应的没有用关键字Virtual修饰的方法,我们称为实方法)。重写虽不改变代码,但是改变父类方法的功能。

class Program
    {
        static void Main(string[] args)
        {
            A A1 = new A();   
            Console.WriteLine(A1.Say());//显示结果为“你好!!”

            B B1 = new B();
            Console.WriteLine(B1.Say());//显示结果为“hello!!”

            A C1 = new B();//调用的为重写之后的方法,将父类的方法修改。
            Console.WriteLine(C1.Say());//显示结果为“hello!!”
            Console.ReadKey();
        }
        public class A   //定义一个新方法
        {
            public virtual string Say()  //虚方法
            {
                return "你好!!";
            }
        }
        public class B:A   //方法B对方法A进行重写。
        {
            public override string Say()  //重写方法
            {
                return "hello!!";
            }
        }
    }

覆盖:


从字面意思理解,就是将原来父类的方法进行了覆盖,仅仅是覆盖而已。在子类中用 new 关键字修饰 定义的与父类中同名的方法,叫覆盖。与重写不同的是,覆盖既不会改变父类中的代码也不会改变父类方法的功能。重写使用的频率比较高,实现多态;覆盖用的频率比较低,用于对以前无法修改的类进行继承的时候。
 class Program
    {
        static void Main(string[] args)
        {
            A A1 = new A();   
            Console.WriteLine(A1.Say());//显示结果为“你好!!”

            B B1 = new B();
            Console.WriteLine(B1.Say());//显示结果为“hello!!”

            A C1 = new B();//调用的为覆盖之前的方法,父类的方法没有修改。
            Console.WriteLine(C1.Say());//显示结果为“你好!!”
            Console.ReadKey();
        }
 public class A//定义一个新方法
        {
            public string Say()
            {
                return "你好!!";
            }
        }
        public class B : A//方法B对方法A进行覆盖。
        {
            public string Say()
            {
                return "hello!!";  //覆盖方法A
            }
        }
    }

重载(overload): 

       overload对我们来说可能比较熟悉,可以翻译为重载,它是指我们可以定义一些名称相同的方法,通过定义不同的输入参数来区分这些方法,然后再调用时,会根据不同的参数样式,来选择合适的方法执行。方法的重载和参数的类型和个数有关,和返回值无关。重载:参数值不同或者参数个数不同均可。  

 public static int Number(int num1)
        {
            return num1;
        }
        public static int Number(int num1,int num2)
       {
           return num1 + num2;
       }

 


评论 20
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值