C#中方法重载 您所在的位置:网站首页 获取字符串的个数的方法有哪些 C#中方法重载

C#中方法重载

2024-07-10 16:16| 来源: 网络整理| 查看: 265

在方法的使用过程中,重载,重写和隐藏是常用到的。下面着重介绍方法的这些使用。

1、重载

重载是方法名不变,参数列表(参数类型或个数)不同的方法体现。

注意:返回值可以相同也可以不同。当参数个数相同而参数类型不同的时候,可以考虑使用泛型,提高代码的复用性。

下面给出示例:

public class Func { // 1、显示给出默认的构造函数,这点与结构体不同,结构体的默认构造不能写,一直存在。 public Func() { } // 2、带一个 int 类型参数的自定义构造 public Func(int a) { } // 3、 与 2 不同,带一个 string 类型参数的自定义构造方法 public Func(string a) { } // 4、与 2,3都不同,有两个参数 public Func(int a,int b) { } // 注意下面这种情况,光是返回值不同不是方法重载,编译器也会报错,所以一定要参数列表不同 public int GetNum() { return 0; } public void GetNum(int a) { } } 2、 重写

重写用于子类重写父类的方法(虚方法或是抽象方法),当使用子类的实例对象赋值给父类引用的时候,调用方法会调用子类重写之后的方法。

注意:重写必须遵守的规则

(1)、使用 Override 修饰,放在 类型声明的前面,只能重写虚方法(virtual)或抽象方法(abstract);

(2)、重写的方法除了方法体可以不同外,方法名,返回值,参数列表必须相同。

下面给出示例:

public class BaseClass { public virtual int GetNum() { return 0; } } public class class1:BaseClass { // 父类的方法是虚方法时(virtual),子类可以不用重写父类的方法,重写需注意: // 1、返回值必须相同 2、方法名必须相同 3、参数列表必须相同 public override int GetNum() { return 1; } } public abstract class AbstractClass { // 抽象方法只能有声明,不能有实现(花括号{}) public abstract int GetNum(); } public class class2:AbstractClass { // 父类是抽象类,则子类必须重写父类的抽象方法,重写的规则同上 public override int GetNum() { return 0; } } // 调用重写方法 // 子类实例化的对象赋值给父类的引用 BaseClass myClass = new class1(); // 调用方法时,会调用子类重写后的方法 int a = myClass.GetNum(); // a = 1 // 抽象类不能实例化,可以用子类实例化的对象赋值给该类的引用 AbstractClass myClass1 = new class2(); int b = myClass1.GetNum(); // b = 03、隐藏 隐藏也是应用于父类和子类,当父类的方法不是虚方法或抽象方法时,子类可以隐藏父类的方法,丰富面向对象的多态性。

注意:

(1)、隐藏方法使用 new 关键字,在类型前面声明;

(2)、方法名和参数列表必须相同,返回值和方法体可以不同;

(3)、父类引用指向子类的实例对象时,调用方法会调用父类的方法,而不是子类的方法。

public class NewClass { public int GetMyNum() { return 0; } } public class class3:NewClass { // 子类隐藏父类的方法时,使用 new 声明,返回值可以与父类方法不同,参数列表必须相同 public new string GetMyNum() { return "子类"; } } NewClass cc = new class3(); // 当我不关心或不清楚返回值的类型时,可以使用 var 声明类型,不过必须要初始化,否则编译器推断不出类型 var c = cc.GetMyNum(); // c = 0



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有