zoukankan      html  css  js  c++  java
  • 面向对象——(5)方法重载

    重载和方法重载

          在一个类定义中,可以编写几个同名的方法,但是只要它们的签名参数列表不同,就会将它们看做唯一的方法。简单的说,一个类中的方法与另一个方法同名,但是参数表不同,这种方法称之为重载方法。


          方法重载,英文为overloading method提供了创建同名的多个方法的能力,但这些方法需使用不同 的参数类型。


    小结:方法重载就是方法名称重复,加载参数不同。


        //对不同的数据执行相似的功能
        class BillPayment
        {
            ...
            void PayBill(int telephoneNumber)
            {
                //此方法用于支付固定电话话费
            }
            
            void PayBill(long consumerNumber)
            {
                //此方法用于支付电费
            }
    
            void PayBill(long consumerNumber,double amount)
            {
                //此方法用于支付移动电话话费
            }
            ...
        }

    (1)在BillPayment支付账单类中,具有PayBill的方法。

    (2)这三个方法方法名称相同,但括号中的参数不同,它们分别执行支付固定电话话费、电费、移动电话话费的功能。如果参数也相同,就没有任何意义了。

    (3)方法重载就是对不同的数据执行相似的功能,比如上例中的支付各项费用的功能。



    重写和方法重写


    重写

         1、重写,又叫覆写、覆盖,英文名称为override

    2、通常,派生类继承基类的方法,因此,在调用对象继承方法的时候,调用和执行的是基类的实现.但是,有时需要对派生类中的继承方法有不同的实现.

    小例子:
     假设动物类存在“跑”的方法,从中派生出马和狗,马和狗的跑得形态是各不相同的,因此同样方法需要两种不同的实现,这就需要“重新编写”基类中的方法.

    3、"重写"基类方法就是修改它的实现或者说在派生类中重新编写。

    方法重写

    1、方法重写,又叫方法覆盖,是方法重载的一种特殊形式,在派生类中重新定义此虚函数时,要求方法名称相同、返回值类型以及参数列表中参数的个数、类型、顺序,都必须与父类中的虚函数完全相同。

    2、在派生类中声明对虚方法的重载,要求在声明中加上override关键字,并且不能有new、static、virtual修饰符。

     //定义基类A
        class A
        {
            int x;
            public virtual void PrintFields()
            {
                Console.WriteLine("x={0}", x);
            }
        }
        //派生类B
        class B : A
        {
            int y;
            //重写A类中的PrintFields方法
            public override void PrintFields()    
            {
                base.PrintFields();
                Console.WriteLine("y={0}", y);
            }
        }



    相关博客:《C#之多态》

  • 相关阅读:
    For in
    For each.....in
    正则表达式
    DOM&&BOM
    字幕滚动
    web API种类
    应用程序接口
    for each in
    object constructor
    编程语言历史
  • 原文地址:https://www.cnblogs.com/saixing/p/6730359.html
Copyright © 2011-2022 走看看