现在的位置: 首页 > 综合 > 正文

你必须知道的.net中把new说透中答案

2012年02月10日 ⁄ 综合 ⁄ 共 2435字 ⁄ 字号 评论关闭

看书中的例子没敲代码,始终不敢确定是什么。今天心痒,就测试了一把。

当然,不只是那个答案。也测试了其他的疑问。为了方便看答案加入了分割数据。

Code

答案是:

123
base class --
1111111111111111111111111111111
bas123
der456
2222222222222222222222222222222222222222
derve class --
3333333333333333333333333333333333
base class --
44444444444444444444444444444444444444444
bas123
der456

 第二种情况是IntNumber中的showInfo()方法不用new而是用override则答案是

123
base class --
1111111111111111111111111111111
bas123
der456
2222222222222222222222222222222222222222
derve class --
3333333333333333333333333333333333
derve class --
44444444444444444444444444444444444444444
bas123
der456

明白了,再看new在不同场合的定义

1,作为运算符,用于创建对象和调用构造函数。

2,作为修饰符,用于向基类成员隐藏继承成员。

作为修饰符,基本的规则可以总结为:实现派生类中隐藏方法,则基类方法必须定义为virtual,

将基类方法实现为vvirtual,能同时保证向前扩展和向后兼容,在派生类中通过new或override进行灵活控制。

new作为修饰符,实现隐藏基类成员时,不可和override共存,应为两者是互斥的:new用于实现创建新成员,同时隐藏基类的同名成员;

而override用于实现对基类成员的扩展。

抱歉!评论已关闭.