重载可以发生在子父类
来源:互联网 发布:网络著名小说家排行榜 编辑:程序博客网 时间:2024/04/28 23:59
原则:
1、继承来的成员函数就像自个定义的一样,所以能构成重载
class BaseClass
{
public void fun()
{
Console.WriteLine("base fun !");
}
}
class ChildClass:BaseClass
{
public void fun(int i)
{
Console.WriteLine("child fun !" + i);
}
}
static void Main(string[] args)
{
ChildClass ccObject = new ChildClass();
BaseClass bcObject = new BaseClass();
ccObject.fun();
ccObject.fun(1);
}
2、不适用new关键字,且不重载的时候,直接覆盖父类的函数(就近原则)
virtual和override只是为了语法上让人能看读清代码,了解发生了重写函数
class BaseClass
{
public void fun()
{
Console.WriteLine("base fun !");
}
}
class ChildClass:BaseClass
{
public void fun(int i)
{
Console.WriteLine("child fun !" + i);
}
public void fun()
{
Console.WriteLine("child fun");
}
}
static void Main(string[] args)
{
ChildClass ccObject = new ChildClass();
BaseClass bcObject = new BaseClass();
ccObject.fun();
ccObject.fun(1);
}
3、new关键字不能构成重载,重载需不同的参数表,new关键字指明的取代函数可以构成重载
public void fun()
{
Console.WriteLine("chile fun");
}
public new void fun()
{
Console.WriteLine("new child fun !");
}
class BaseClass
{
public void fun()
{
Console.WriteLine("base fun !");
}
}
class ChildClass:BaseClass
{
public void fun(int i)
{
Console.WriteLine("child fun !" + i);
}
public new void fun()
{
Console.WriteLine("new child fun !");
}
public new void fun(int i, int j)
{
Console.WriteLine("child fun i + j!");
}
}
static void Main(string[] args)
{
ChildClass ccObject = new ChildClass();
BaseClass bcObject = new BaseClass();
ccObject.fun();
ccObject.fun(1);
ccObject.fun(1, 2);
ccObject.fun(1);
}
实际上从上面的代码可以看出,不适用new关键字,子类成员函数的同样覆盖父类的相同声明(未构成的重载)的函数,适用new关键字
在语法形式上,可以指出这种情况的发生,是一个好习惯,但是并不是必须的这么适用
- 重载可以发生在子父类
- 在工程对话框中 重载onInitDialog()时 发现调用 onOK()发生断言错误
- C++哪些运算符重载可以重载?
- 在重载运算符时,类的对象可以直接访问私有成员解惑
- 在重载运算符时,类的对象可以直接访问私有成员解惑
- 奇迹在眼前发生~~~~~~
- 谈debug版本可以正常运行,而在release下运行出错之原因及避免类似情况发生
- const可以使得函数重载
- 关于javascript是否可以重载
- 为什么C++可以重载函数
- 在类中const成员函数和非const成员函数可以作为重载成员函数同时存在
- 这件事貌似发生在中国...
- 数据库连接泄漏还在发生
- 发生在春天的故事
- 如果地震发生在宁波
- 判断阻塞发生在某张表上
- flex 绑定在什么时候发生
- 发射点发生地方在哪里
- SaaS成潮流百会推动CRM市场进入十元时代
- showModalDialog及dialogArguments使用
- [me]美国的irobot 机器人
- Ajax跨域的解决办法:载入javascript(js)文件实现无刷新更新数据(转载)
- 阳光灿烂
- 重载可以发生在子父类
- POJ 3126
- 2009年12月04日安全工具更新
- 第八章 定时器part1
- .net(c#)跨页面传值方法总结
- java中调用ORACLE存储过程
- POJ 3087
- 什么是NETBIOS?
- 读字段的一个值返回多个CheckBox,用Split取值