面向对象——(5)方法重载

来源:互联网 发布:迈克菲和360知乎 编辑:程序博客网 时间:2024/06/08 17:11

重载和方法重载

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


      方法重载,英文为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#之多态》

2 0
原创粉丝点击