zoukankan      html  css  js  c++  java
  • c# override,new关键字区别与使用(学习笔记)

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

    先看段代码:

     1using System;
     2using System.Collections.Generic;
     3using System.Text;
     4
     5namespace 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隐藏基类的方法,那么基类的方法和当前类的方法同时存在只是被隐藏了;

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

  • 相关阅读:
    delphi RTTI 反射技术
    delphi 自我删除和线程池(1000行代码,需要仔细研究)
    寻找两个已序数组中的第k大元素
    OpenCV中的神器Image Watch
    PYTHON 之 【RE模块的正则表达式学习】
    Call U
    微软IE11浏览器的7大变化
    集群应用及运维经验小结
    逆序对:从插入排序到归并排序
    Jquery 图片轮播实现原理总结
  • 原文地址:https://www.cnblogs.com/zhangchenliang/p/2656658.html
Copyright © 2011-2022 走看看