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隐藏基类的方法,那么基类的方法和当前类的方法同时存在只是被隐藏了;

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

  • 相关阅读:
    Docker
    Docker
    VIM
    Python
    Python
    VIM
    Python
    其他
    Java
    Java
  • 原文地址:https://www.cnblogs.com/zhangchenliang/p/2656658.html
Copyright © 2011-2022 走看看