3个回答
展开全部
在我理解,重载允许你以同样的名称不同的参数来定义多个方法实现,最大的意义就是可以以一种对外统一一批的接口来实现一系列相似的逻辑。通俗的说就是:
1,可以用同样的名称来实现多个相似的逻辑,对外看起来就是一个相对比较统一的接口,比如定义一些列的查询方法,只是传入的参数不同,采用重载,外部调用起来,看到就是一个查询方法的多个重载,比你写多个不同名的方法,看起来要清爽得多。
2,可以将一系列相似的逻辑通过重载的形式进行一步一步的封装,将最终的实现逻辑放到一个最小化的单元内,减少出错概率。即,先写一个最灵活的方法,再重载,逐步降低重载的方法的灵活性,以便适应特定的需求,最终的实现逻辑皆封装在那个最灵活的方法里,这样就能实现逻辑的统一控制。
还是打个比方,有一系列同名的查询方法,都是查询用户:
public List<User> GetUsers(string userName)
{
GetUsers(userName, null, null);
}
public List<User> GetUsers(string userName, int? age, int? genger)
{
string where = ""; // 构造where
GetUsers(where); // 最终还是调用GetUsers(string where)这个方法
}
public List<User> GetUsers(string where)
{
// 最终的查询实现逻辑封装在这个方法里,出了问题只需要改这一个地方
}
试想一下,如果上面的三个方法,写成不同的方法名,并各自实现自己的逻辑,这样一来不好看,二来逻辑被分散到三个方法里,大大增加了出错概率,但其实它们最终是可以由一个实现来控制的。
1,可以用同样的名称来实现多个相似的逻辑,对外看起来就是一个相对比较统一的接口,比如定义一些列的查询方法,只是传入的参数不同,采用重载,外部调用起来,看到就是一个查询方法的多个重载,比你写多个不同名的方法,看起来要清爽得多。
2,可以将一系列相似的逻辑通过重载的形式进行一步一步的封装,将最终的实现逻辑放到一个最小化的单元内,减少出错概率。即,先写一个最灵活的方法,再重载,逐步降低重载的方法的灵活性,以便适应特定的需求,最终的实现逻辑皆封装在那个最灵活的方法里,这样就能实现逻辑的统一控制。
还是打个比方,有一系列同名的查询方法,都是查询用户:
public List<User> GetUsers(string userName)
{
GetUsers(userName, null, null);
}
public List<User> GetUsers(string userName, int? age, int? genger)
{
string where = ""; // 构造where
GetUsers(where); // 最终还是调用GetUsers(string where)这个方法
}
public List<User> GetUsers(string where)
{
// 最终的查询实现逻辑封装在这个方法里,出了问题只需要改这一个地方
}
试想一下,如果上面的三个方法,写成不同的方法名,并各自实现自己的逻辑,这样一来不好看,二来逻辑被分散到三个方法里,大大增加了出错概率,但其实它们最终是可以由一个实现来控制的。
展开全部
首先你要了解什么是方法的重载,方法名相同,参数类型不同,参数个数,返回类型可以相同,也可以不同。由上面的定义可以得出我们调用同一个方法名,但是可以实现不同的功能。比如我有两个对象A,B。对象A想调用方法FUN来实现相加的功能,那么我们就写FUN的方法,里面实现了一个加法。而对象B 也想调用方法FUN,但是是要实现减法,这个时候直接调用FUN只能实现加法,怎么办呢?方法的重载,这就派上用场了,我们重载FUN,接受不同的参数和返回值,就可以实现调用同一个方法,但却实现了不同的功能。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
最有用的是可以按照你自己的意思输出 也就是客户的要求
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询