zoukankan      html  css  js  c++  java
  • C# new and override

    /// 测试点
    /// (1) Override 与 new 的区别 (new后方法在父类与子类中各自存在,Override覆盖父类中函数)

    /// (2) 子类 构造函数 的执行时间 (先执行父类构造函数,再执行子类构造函数)

    public  class baseClass
        
    {

            
    public baseClass()
            
    {
                MethodOfOverride();
                MethodOfNew();
     
            }


            
    public virtual void MethodOfOverride()
            
    {
                Console.WriteLine(
    "baseClass:MethodOfOverride");
            }

            
    public void MethodOfNew()
            
    {
                Console.WriteLine(
    "baseClass:MethodOfNew");
            }


            

        }


        
    public class derivedClass : baseClass
        
    {
            
    public int value;
            
    public derivedClass()
            
    {
                value 
    = 2;
            }


            
    public override void MethodOfOverride()
            
    {

                Console.WriteLine(
    "derivedClass:MethodOfOverride value=" + value.ToString());
            }


            
    public new void MethodOfNew()
            
    {
                Console.WriteLine(
    "derivedClass:MethodOfNew value=" + value.ToString());
            }


        }



        
    /// <summary>
        
    /// 测试点
        
    /// (1) Override 与 new 的区别 (new后方法在父类与子类中各自存在,Override覆盖父类中函数)
        
    /// (2) 子类 构造函数 的执行时间 (先执行父类构造函数,再执行子类构造函数)
        
    /// </summary>

        class Program
        
    {
            
    static void Main(string[] args)
            
    {
                Console.WriteLine(
    "*********baseClass tempClassA = new baseClass()*********");
                Console.WriteLine(
    "----------------初始化输出----------------------");
                baseClass tempClassA 
    = new baseClass();
                Console.WriteLine(
    "----------------下面方法输出------------------------");
                tempClassA.MethodOfOverride();
                tempClassA.MethodOfNew();

                Console.WriteLine(
    "*********derivedClass tempClassB = new derivedClass()*********");
                Console.WriteLine(
    "----------------下面初始化输出----------------------");
                derivedClass tempClassB 
    = new derivedClass();
                Console.WriteLine(
    "----------------下面方法输出------------------------");
                tempClassB.MethodOfOverride();
                tempClassB.MethodOfNew();

                Console.WriteLine(
    "*********baseClass tempClassC = new derivedClass()*********");
                Console.WriteLine(
    "----------------下面初始化输出----------------------");
                baseClass tempClassC 
    = new derivedClass();
                Console.WriteLine(
    "----------------下面方法输出------------------------");
                tempClassC.MethodOfOverride();
                tempClassC.MethodOfNew();

                Console.Read();

                
    //
                /* 输出结果
                 
                 *********baseClass tempClassA = new baseClass()*********
                 ----------------初始化输出----------------------
                 baseClass:MethodOfOverride
                 baseClass:MethodOfNew
                 ----------------下面方法输出------------------------
                 baseClass:MethodOfOverride
                 baseClass:MethodOfNew
                 
                 
                 *********derivedClass tempClassB = new derivedClass()*********
                 ----------------初始化输出----------------------
                 derivedClass:MethodOfOverride value=0
                 baseClass:MethodOfNew
                 ----------------下面方法输出------------------------
                 derivedClass:MethodOfOverride value=2
                 derivedClass:MethodOfNew value=2
                 
                 
                 *********baseClass tempClassC = new derivedClass()********* 
                 ----------------初始化输出----------------------
                 derivedClass:MethodOfOverride value=0
                 baseClass:MethodOfNew
                 ----------------下面方法输出------------------------
                 derivedClass:MethodOfOverride value=2
                 baseClass:MethodOfNew
                 
                 
    */


            }

        }
  • 相关阅读:
    [跟我学spring学习笔记][更多DI知识]
    [跟我学spring][Bean的作用域]
    [跟我学spring学习笔记][DI循环依赖]
    [跟我学spring学习笔记][IoC]
    [跟我学Spring学习笔记][DI配置与使用]
    [Spring入门学习笔记][静态资源]
    [Spring入门学习笔记][Spring的AOP原理]
    介绍map.entry接口
    hashmap的遍历方法
    java中的队列
  • 原文地址:https://www.cnblogs.com/day/p/1517864.html
Copyright © 2011-2022 走看看