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是重写了基类里的函数,一旦子类被被执行过,那么基类里的这个方法就被彻底隐藏了,指向子类的对象就会执行子类里面的方法。

  • 相关阅读:
    Android中的Intent详解
    Android数据保存之文件保存
    Android数据保存之SharedPreference
    Activity的生命周期函数
    Android主线程的消息系统(HandlerLooper)
    Activity生命周期
    Android内存优化之磁盘缓存
    Android内存优化之内存缓存
    Android Bitmap那些事之如何优化内存
    Bitmap那些事之内存占用计算和加载注意事项
  • 原文地址:https://www.cnblogs.com/oracleblogs/p/3020619.html
Copyright © 2011-2022 走看看