重载还是覆写?
重载和覆写是面向对象程序设计语言中两个基本的概念,然而这两个概念,初学者却往往混淆它们,昨天在论坛上看到有初学者把Override说成是重载,我觉得有必要再对这两个概念作一下解释。
1.重载(Overload):
类中定义的方法可能有不同的版本,它具有如下的特征:
I. 方法名必须相同
II. 参数列表必须不相同,与参数列表的顺序无关
III. 返回值类型可以不相同
示意代码:
public class MyClass
{
public void Write(string _str)
{
//
}
public void Write(string _str, string _target)
{
//
}
public bool Write(string _str, string _target, bool _flag)
{
//
}
}
{
public void Write(string _str)
{
//
}
public void Write(string _str, string _target)
{
//
}
public bool Write(string _str, string _target, bool _flag)
{
//
}
}
注意:参数列表必须不相同这一条由于泛型的出现,要特别小心。例如下面代码构成了重载,尽管它们的参数列表相同:
public class MyClass
{
public void Write<T>(string _str)
{
//
}
public void Write(string _str)
{
//
}
}
{
public void Write<T>(string _str)
{
//
}
public void Write(string _str)
{
//
}
}
2.覆写(Override):
子类中为满足自己的需要来重复定义某个方法的不同实现,它具有如下特征:
I. 通过使用关键字Override来覆写
II. 只有虚方法和抽象方法才能够被覆写
III. 相同的方法名
IV. 相同的参数列表
V. 相同的返回值类型
示意代码:
public abstract class BaseClass
{
public abstract void Write(string _str);
}
public class SubClass : BaseClass
{
public override void Write(string _str)
{
//
}
}
{
public abstract void Write(string _str);
}
public class SubClass : BaseClass
{
public override void Write(string _str)
{
//
}
}
支持TerryLee的创业产品Worktile
Worktile,新一代简单好用、体验极致的团队协同、项目管理工具,让你和你的团队随时随地一起工作。完全免费,现在就去了解一下吧。
https://worktile.com
Worktile,新一代简单好用、体验极致的团队协同、项目管理工具,让你和你的团队随时随地一起工作。完全免费,现在就去了解一下吧。
https://worktile.com