[自学问题总结]重载(overload)与重写(override)

来源:互联网 发布:闲鱼淘宝介入 在哪里 编辑:程序博客网 时间:2024/06/07 20:09

一 重载(overload)

1.概念

在同一个类中,方法名称相同,但参数的个数或者对应位置上的类型不同。这种情况称之为重载。重载和返回值没有关系。

2.例子

打印99乘法表

public static void print99(){for (var i = 1; i <= 9; i++){for (var j = 1; j <= i; j++){Console.Write(j + "*" + i + "=" + j * i + "\t");}Console.WriteLine();}}

打印乘法表 但不一定是9

public static void print99(int num){for (var i = 1; i <= num; i++){for (var j = 1; j <= i; j++){Console.Write(j + "*" + i + "=" + j * i + "\t");}Console.WriteLine();}}

 

二 重写(override)

1. 重写的关键字是virtual 和 override

virtual:用在基类中,指定一个方法(属性),表示这个方法(属性)可以重写。

override:用在派生类中,表示对基类的方法(属性)的重写。

public class Person{public virtual void Speak(){Console.WriteLine("基类方法");}}public class Chinese : Person{public override void Speak(){Console.WriteLine("派生类方法");}}


2. 调用的都是派生类的方法

var chinese = new Chinese();chinese.Speak();((Person)chinese).Speak();Console.ReadKey();

3. 特点

必须位于基类和派生类中;

方法名称必须相同;

参数类型和参数的个数必须相同;

返回值类型必须相同;

必须使用关键字virtual和override;

即使把派生类的实例转换成基类类型,也无法调用基类中被覆盖的方法,因为它已经被覆盖了。


原创粉丝点击