C#中方法重载_java中重载是什么意思「建议收藏」

C#中方法重载_java中重载是什么意思「建议收藏」在方法的使用过程中,重载,重写和隐藏是常用到的。下面着重介绍方法的这些使用。1、重载重载是方法名不变,参数列表(参数类型或个数)不同的方法体现。注意:返回值可以相同也可以不同。当参数个数相同而参数类型不同的时候,可以考虑使用泛型,提高代码的复用性。下面给出示例:publicclassFunc{ //1、显示给出默认的构造函数,这点与结构体不同,结构体的默认构造不能_c#方法重载的调用

C#中方法重载_java中重载是什么意思「建议收藏」"

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

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 = 0

3、隐藏

隐藏也是应用于父类和子类,当父类的方法不是虚方法或抽象方法时,子类可以隐藏父类的方法,丰富面向对象的多态性。

注意:

(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

今天的文章C#中方法重载_java中重载是什么意思「建议收藏」分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/58118.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注