zoukankan      html  css  js  c++  java
  • override Method与new Method的区别

    1,首先这个问题是建立在父类对象指向子类类型的,先不多说了,先上代码

    代码一:输出结果为 A、B、A.fun

    View Code
     1 using System;
     2 
     3 namespace ConsoleApplication1
     4 {
     5     class Program
     6     {
     7         static void Main(string[] args)
     8         {
     9             A a = new B();
    10             a.fun();
    11         }
    12     }
    13 
    14    public class A
    15     {
    16        public A()
    17         {
    18             Console.WriteLine("A");
    19         }
    20 
    21        public virtual void fun()
    22         {
    23             Console.WriteLine("A.fun");
    24         }
    25     }
    26 
    27     public class B:A
    28     {
    29        public B()
    30         {
    31             Console.WriteLine("B");
    32         }
    33 
    34         new public void fun()
    35         { 
    36             Console.WriteLine("B.fun");
    37         }
    38     }
    39 }

    代码二:输出结果为:A、B、B.fun

    View Code
     1 using System;
     2 
     3 namespace ConsoleApplication1
     4 {
     5     class Program
     6     {
     7         static void Main(string[] args)
     8         {
     9             A a = new B();
    10             a.fun();
    11         }
    12     }
    13 
    14    public class A
    15     {
    16        public A()
    17         {
    18             Console.WriteLine("A");
    19         }
    20 
    21        public virtual void fun()
    22         {
    23             Console.WriteLine("A.fun");
    24         }
    25     }
    26 
    27     public class B:A
    28     {
    29        public B()
    30         {
    31             Console.WriteLine("B");
    32         }
    33 
    34         public override void fun()
    35         { 
    36             Console.WriteLine("B.fun");
    37         }
    38     }
    39 }

    代码一与代码二的主要区别就是在class B中对方法fun()的修士符,代码一是new  代码二是override吗,而两者的结果却截然不同,后来想了想,明白了

    2.new Method实际上是新写了一个函数,基类里的仍然存在,当基类对象调用方法的是还是调用基类里面的方法;

         而override是重写了基类里的函数,一旦子类被被执行过,那么基类里的这个方法就被彻底隐藏了,指向子类的对象就会执行子类里面的方法。

  • 相关阅读:
    linux性能优化参数小节
    java并发编程知识点备忘
    编码之痛:操作系统迁移后redis缓存无法命中
    jetty8 text/plain默认字符编码的坑
    设计数据密集型应用笔记1:可靠 可扩展可维护的应用
    使用异步任务降低API延迟_实践总结
    常用失败控制模式
    使用maven插件构建docker镜像
    做几道美团校招题
    Boyer-Moore字符串查找算法的实现
  • 原文地址:https://www.cnblogs.com/oracleblogs/p/3020619.html
Copyright © 2011-2022 走看看