new修饰符主要是用来隐藏从基类继承的成员. 这句话怎么理解呢,就是说有一个类,它有一个继承类,继承类中存在和基类中一样名称的成员(属性,方法等). 对继承类中的该成员使用new修饰符时,调用时将会隐藏其基类中的该成员

举个例子如下:

public class BaseC
{
public int x;
public void MyTest() {}
} public class DerivedC : BaseC
{
public new void MyTest() {}
}

类DerivedC继承类BaseC,在继承类中有一个和基类中同名的方法MyTest(), 使用new修饰符隐藏了基类的MyTest()方法。基类BaseC的字段x不受影响,因为没有使用类似名称将其隐藏.

另外,对同一个成员同时使用new和override是错误的做法,因为这两个修饰符的含义互斥。

new修饰符和override修饰符的区别

new修饰符 --- 以同样的名称创建一个新成员并使原始成员变为隐藏

override修饰符 --- 扩展继承成员的实现

再举一个例子:

public class BaseC
{
public static int x = ;
public static int y =; } public class DerivedC : BaseC
{ //Hide field 'x'
new public static int x = ; static void Main()
{
//display the new value of x
Console.WriteLine(x); // display the hidden value of x
Console.WriteLine(BaseC.x); //display the unhidden member y
Console.WriteLine(y); }
} /*
output:
75
45
15
*/

下面再举一个嵌套类的例子

public class MyBaseClass
{ public class MyNestedClass
{
public int x = ;
public int y; } } public class MyDerivedClass : MyBaseClass
{
//Nested type hiding the base type members
new public class MyNestedClass
{
public int x = ;
public int y;
public int z; } static void Main()
{
//creating an object from the overlapping class
MyNestedClass myClass1 = new MyNestedClass (); //Creating an object from the hidden class
MyBaseClass.MyNestedClass myClass2 = new MyBaseClass.MyNestedClass() Console.WriteLine(myClass1.x);
Console.WriteLine(myClass2.x); }
} /* Output
1000
2000
*/

如果在继承类MyDerivedClass的嵌套类MyNestedClass中移除new修饰符,程序一样会编译和运行,但你将会收到以下警告

The keyword new is required on 'MyDerivedClass.x' because it hides inherited member 'MyBaseClass.x'.

最新文章

  1. AndroidStudio错误总结及解决(待续)
  2. 快速入门系列--WCF--02消息、会话与服务寄宿
  3. ERROR 1130: Host ’...′ is not allowed to connect to this MySQL server
  4. SQL SERVER树型数据处理时,函数递归调用问题,查询根节点,子节点函数
  5. HDU 4612 Warm up(2013多校2 1002 双连通分量)
  6. build-your-first-mobile-app(第一个 PhoneGap cordova Coldfusion App)
  7. PCB布线的地线干扰与抑制方法
  8. C# - 自定义 DataSet 的使用
  9. delphi中覆盖最大化消息(WM_GETMINMAXINFO)
  10. Python数据可视化-seaborn库之countplot
  11. bash的基础特性
  12. dubbo接口FindMemberInfoTest思路整合
  13. NodeJS开发环境配置
  14. AndroidStudio 中查看获取MD5和SHA1值以及如何查看手机应用信息以及读取*.db数据库里面数据
  15. python进行数据分析----线性回归
  16. pyqt与拉勾网爬虫的结合
  17. MVC4.0 IIS 7.5 详细错误 - 404.0 - Not Found
  18. PC端体验效果最佳epub阅读器——iRead爱读书
  19. (线段树 区间查询更新) Can you answer these queries? -- hdu--4027
  20. SVN For Mac: Cornerstone.app破解版免费下载

热门文章

  1. tp导出excel
  2. centos5.5源更新方法(网易163源 很快的源)
  3. 负载均衡之IP
  4. POJ 2309 BST(二叉搜索树)
  5. 开发人员需要具备的DBA技术
  6. NserviceBus过期处理
  7. SHOI2016 随机序列
  8. ngget配置
  9. bzoj 4103: 异或运算 可持久化Trie
  10. 【算法总结】Manacher's Algorithm