扩:new and override

简介:

昨天有个网友问我继承里面的new和override关键词有啥区别,呃,我们来看个例子就知道了

new ==》隐藏父类同名方法  override==》覆盖

定义一个父类:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
public  class  People
{
     /// <summary>
     ///ushort参考: https://msdn.microsoft.com/zh-CN/library/cbf1574z.aspx
     /// </summary>
     public  string  Name {  get set ; }
     public  ushort  Age {  get set ; }
 
     public  People( string  name,  ushort  age)
     {
         this .Name = name;
         this .Age = age;
     }
     public  void  Hi() //People
     {
         Console.WriteLine( "Name: "  this .Name +  " Age: "  this .Age);
     }
     public  virtual  void  Show() //People
     {
         Console.WriteLine( "Name: "  this .Name +  " Age: "  this .Age);
     }
}

  定义一个子类:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
public  class  Student : People
{
     #region 属性
     /// <summary>
     /// 学校
     /// </summary>
     public  string  School {  get set ; }
     /// <summary>
     /// 班级
     /// </summary>
     public  string  StrClass {  get set ; }
     /// <summary>
     /// 学号
     /// </summary>
     public  string  StrNum {  get set ; }
     #endregion
 
     #region 构造函数
     /// <summary>
     /// 调用父类构造函数
     /// </summary>
     /// <param name="name"></param>
     /// <param name="age"></param>
     public  Student( string  name,  ushort  age) :  base (name, age)
     {
 
     }
     public  Student( string  name,  ushort  age,  string  school,  string  strClass,  string  strNum) :  this (name, age)
     {
         this .School = school;
         this .StrClass = strClass;
         this .StrNum = strNum;
     }
     #endregion
 
     /// <summary>
     /// new-隐藏
     /// </summary>
     public  new  void  Hi() //Student
     {
         Console.WriteLine( "Name: "  this .Name +  " Age: "  this .Age +  " School: "  this .School +  " strClass: "  this .StrClass +  " strNum: "  this .StrNum);
     }
     /// <summary>
     /// override-覆盖
     /// </summary>
     public  override  void  Show() //Student
     {
         Console.WriteLine( "Name: "  this .Name +  " Age: "  this .Age +  " School: "  this .School +  " strClass: "  this .StrClass +  " strNum: "  this .StrNum);
     }
}

  调用一下

1
2
3
4
5
6
7
8
9
10
11
12
static  void  Main( string [] args)
         {
             People p =  new  Student( "app" , 10,  "北京大学" "001" "01001" );
             p.Hi(); p.Show();
 
             System.Console.WriteLine();
 
             Student s = p  as  Student;
             s.Hi(); s.Show();
 
             System.Console.ReadKey();
         }

  输出:

可以发现,用new修饰的方法,其父方法并没有被改变,只是被隐藏了

用override重写的方法却被覆盖,从而改变了(多态)

 


本文转自毒逆天博客园博客,原文链接:http://www.cnblogs.com/dunitian/p/5206954.html,如需转载请自行联系原作者

相关文章
|
8月前
|
存储 Java
ArrayList的初始化容量与扩容机制解析
ArrayList的初始化容量与扩容机制解析
|
存储 Java
ArrayList自动扩容(详细篇)
ArrayList自动扩容(详细篇)
264 1
|
存储 容器
HashMap什么时候扩容,如何扩容?怎么轻松化解?
一位2年工作经验的小伙伴面试时被问到,说,HashMap什么时候扩容,为什么要扩容?这个问题本身不是很难,但是这位小伙伴对底层实现原理没有太多关注,所以,被这个问题难住了。 下面我给大家分析一下这个问题的底层逻辑。
170 2
|
21天前
|
安全 Java 开发者
final 到底有啥用,99% 的开发者可能只知道一半!
本场主题主要是了解final的各项功能,并且在面试中如何能够自信回答面试官询问final的用途。内容主要为以下五部分。 1.自我经历 2.final修饰变量 3.final修饰类 4.final的实际应用场景 5.面试问答汇总
|
2月前
|
存储 关系型数据库 MySQL
智能调度、秒级弹性|一文带你探索Compaction Service的进化之路
ADB MySQL的Compaction Service功能通过将Compaction任务从存储节点解耦至独立的弹性资源池执行,解决了资源隔离性弱、并发度低等问题,实现了资源消耗降低50%,任务执行时间平均减少40%,并支持按量付费,提升了系统的稳定性和成本效益。
|
2月前
|
Java 大数据
ArrayList扩容机制
本文介绍了Java中ArrayList的add方法及其内部调用的ensureCapacityInternal和ensureExplicitCapacity方法。当首次添加元素时,ArrayList会扩容至10。之后每达到容量上限时,会通过grow方法将容量扩大1.5倍。文章还解释了length、length()和size()的区别。
46 1
|
3月前
|
Oracle Java 关系型数据库
农行1面:说说 final,finally,finalize的区别
在 Java中,“final”、“finally”和“finalize”是三个不同的关键字或方法,尽管它们的名字相似,但在功能和用途上却有显著的区别,这篇文章我们继续分析一篇农行1面的题目:说说 final,finally,finalize的区别。
26 3
|
7月前
|
索引
HashMap扩容为什么每次都是之前的2倍
HashMap扩容为什么每次都是之前的2倍
120 0
|
存储 Java 索引
ArrayList 的扩容机制
ArrayList 的扩容机制
|
存储 Java
深入理解ArrayList的动态扩容机制及应用
在java编程中,数据结构起着至关重要的作用,而ArrayList作为一种常用的动态数组,为我们在处理数据时提供了便利。其中,其独特的动态扩容机制更是为其赢得了广泛的应用。我们不管在工作还是面试中,都会遇到ArrayList,本文将深入探讨ArrayList的动态扩容机制,以便我们在工作或者面试中用到。
193 0
深入理解ArrayList的动态扩容机制及应用

热门文章

最新文章