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

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

先看段代码:
 1 using  System;
 2 using  System.Collections.Generic;
 3 using  System.Text;
 4
 5 namespace  ConsoleApplication1
 6 {
 7    class Program
 8    {
 9
10        static void Main(string[] args)
11        {
12            baseClass bc;
13            class1 ct1 = new class1();
14
15            class2 ct2 = new class2();
16
17            ct1.prinf();
18            bc = ct1;
19            bc.prinf();
20
21            Console.WriteLine("---------------------");
22            
23            ct2.prinf();
24            bc = ct2;
25            bc.prinf();
26
27        }

28    }

29
30    public class baseClass
31    {
32        private int index = 0;
33
34        public virtual void prinf()
35        {
36
37            Console.WriteLine("这是基类虚方法" + index.ToString());
38
39        }

40
41    }

42
43    public class class1 : baseClass
44    {
45        private int index = 1;
46
47        public override void prinf()
48        {
49
50            Console.WriteLine("这是子类新的方法" + index.ToString());
51
52        }

53
54    }

55
56    public class class2 : baseClass
57    {
58        private int index = 2;
59
60        public new void prinf()
61        {
62
63            Console.WriteLine("这是子类新的方法" + index.ToString());
64
65        }

66
67    }

68
69
70}

71

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

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

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

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

转载于:https://www.cnblogs.com/cgy985/archive/2007/11/20/966118.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值