且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

c# override,new关键字区别与使用(学习笔记)

更新时间:2021-10-19 23:34:10

今天看到一个朋友
在override,new上的问题搞错,呵呵我想很多刚入门的朋友也一样吧
我呢就查查资料顺便巩固一下自己的理解,现在整理出学习笔记.

先看段代码:

 1c# override,new关键字区别与使用(学习笔记)using System;
 2c# override,new关键字区别与使用(学习笔记)using System.Collections.Generic;
 3c# override,new关键字区别与使用(学习笔记)using System.Text;
 4c# override,new关键字区别与使用(学习笔记)
 5c# override,new关键字区别与使用(学习笔记)namespace ConsoleApplication1
 6c# override,new关键字区别与使用(学习笔记){
 7c# override,new关键字区别与使用(学习笔记)    class Program
 8c# override,new关键字区别与使用(学习笔记)    {
 9c# override,new关键字区别与使用(学习笔记)
10c# override,new关键字区别与使用(学习笔记)        static void Main(string[] args)
11c# override,new关键字区别与使用(学习笔记)        {
12c# override,new关键字区别与使用(学习笔记)            baseClass bc;
13c# override,new关键字区别与使用(学习笔记)            class1 ct1 = new class1();
14c# override,new关键字区别与使用(学习笔记)
15c# override,new关键字区别与使用(学习笔记)            class2 ct2 = new class2();
16c# override,new关键字区别与使用(学习笔记)
17c# override,new关键字区别与使用(学习笔记)            ct1.prinf();
18c# override,new关键字区别与使用(学习笔记)            bc = ct1;
19c# override,new关键字区别与使用(学习笔记)            bc.prinf();
20c# override,new关键字区别与使用(学习笔记)
21c# override,new关键字区别与使用(学习笔记)            Console.WriteLine("---------------------");
22c# override,new关键字区别与使用(学习笔记)            
23c# override,new关键字区别与使用(学习笔记)            ct2.prinf();
24c# override,new关键字区别与使用(学习笔记)            bc = ct2;
25c# override,new关键字区别与使用(学习笔记)            bc.prinf();
26c# override,new关键字区别与使用(学习笔记)
27c# override,new关键字区别与使用(学习笔记)        }

28c# override,new关键字区别与使用(学习笔记)    }

29c# override,new关键字区别与使用(学习笔记)
30c# override,new关键字区别与使用(学习笔记)    public class baseClass
31c# override,new关键字区别与使用(学习笔记)    {
32c# override,new关键字区别与使用(学习笔记)        private int index = 0;
33c# override,new关键字区别与使用(学习笔记)
34c# override,new关键字区别与使用(学习笔记)        public virtual void prinf()
35c# override,new关键字区别与使用(学习笔记)        {
36c# override,new关键字区别与使用(学习笔记)
37c# override,new关键字区别与使用(学习笔记)            Console.WriteLine("这是基类虚方法" + index.ToString());
38c# override,new关键字区别与使用(学习笔记)
39c# override,new关键字区别与使用(学习笔记)        }

40c# override,new关键字区别与使用(学习笔记)
41c# override,new关键字区别与使用(学习笔记)    }

42c# override,new关键字区别与使用(学习笔记)
43c# override,new关键字区别与使用(学习笔记)    public class class1 : baseClass
44c# override,new关键字区别与使用(学习笔记)    {
45c# override,new关键字区别与使用(学习笔记)        private int index = 1;
46c# override,new关键字区别与使用(学习笔记)
47c# override,new关键字区别与使用(学习笔记)        public override void prinf()
48c# override,new关键字区别与使用(学习笔记)        {
49c# override,new关键字区别与使用(学习笔记)
50c# override,new关键字区别与使用(学习笔记)            Console.WriteLine("这是子类新的方法" + index.ToString());
51c# override,new关键字区别与使用(学习笔记)
52c# override,new关键字区别与使用(学习笔记)        }

53c# override,new关键字区别与使用(学习笔记)
54c# override,new关键字区别与使用(学习笔记)    }

55c# override,new关键字区别与使用(学习笔记)
56c# override,new关键字区别与使用(学习笔记)    public class class2 : baseClass
57c# override,new关键字区别与使用(学习笔记)    {
58c# override,new关键字区别与使用(学习笔记)        private int index = 2;
59c# override,new关键字区别与使用(学习笔记)
60c# override,new关键字区别与使用(学习笔记)        public new void prinf()
61c# override,new关键字区别与使用(学习笔记)        {
62c# override,new关键字区别与使用(学习笔记)
63c# override,new关键字区别与使用(学习笔记)            Console.WriteLine("这是子类新的方法" + index.ToString());
64c# override,new关键字区别与使用(学习笔记)
65c# override,new关键字区别与使用(学习笔记)        }

66c# override,new关键字区别与使用(学习笔记)
67c# override,new关键字区别与使用(学习笔记)    }

68c# override,new关键字区别与使用(学习笔记)
69c# override,new关键字区别与使用(学习笔记)
70c# override,new关键字区别与使用(学习笔记)}

71c# override,new关键字区别与使用(学习笔记)


运行结果:
这是子类新的方法1
这是子类新的方法1
---------------------
这是子类新的方法2
这是基类虚方法0

如上
使用override重写printf方法,通过父类引用一样只能看到重写后的方法;
如果使用new隐藏printf方法,父类子类引用各自对应方法;

override重写虚方法,那么就只剩下重写以后的方法;
new隐藏基类的方法,那么基类的方法和当前类的方法同时存在只是被隐藏了;

真想弄些实际应用的例子,想好了补上.




本文转自黄聪博客园博客,原文链接:http://www.cnblogs.com/huangcong/archive/2010/12/03/1895408.html,如需转载请自行联系原作者