virtual c#的虚拟方法,为什么要重载虚拟方法?

来源:百度知道 编辑:UC知道 时间:2024/06/17 16:52:39
virtual c#的虚拟方法,为什么要重载虚拟方法?
重载了虚拟方法会有什么效果?

重载是在一个类里一系列参数不同名字相同的方法。
它是指我们可以定义一些名称相同的方法,通过定义不同的输入参数来区分这些方法,然后再调用时,CLR就会根据不同的参数样式,来选择合适的方法执行。在使用重载要注意以下的几点:
1、在使用重载时只能通过不同的参数样式。例如,不同的参数类型,不同的参数个数,不同的参数顺序(当然,同一方法内的几个参数类型必须不一样,例如可以是fun(int, float), 但是不能为fun(int, int));
2、不能通过访问权限、返回类型、抛出的异常进行重载;
3、方法的异常类型和数目不会对重载造成影响;

再给你个例子,更直观一些,看看他的效果
using System;

abstract public class contact
{
public virtual string prinf()
{
return ("这是虚方法");
}
}

public class class1:contact
{
public string prinf()
{
return ("这是新的方法");//但这会出现编译警告,因为已经从contact那继承了一个同名方法
}
}
想要通过编译,只需将prinf的声明改为
public override string prinf()

public new string prinf()
但是这两种声明方式是有区别的,
请看下面的例子:
using System;

abstract public class contact
{
public virtual string prinf()
{
return ("这是虚方法");
}
}

public class class1:co