博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
父类与子类间的隐藏与重写
阅读量:2119 次
发布时间:2019-04-30

本文共 1984 字,大约阅读时间需要 6 分钟。

父类与子类间的隐藏与重写例子(改写一题面试题)

(1)隐藏
当分别位于父类和子类的两个方法完全一样时,调用哪个方法由对象变量的类型决定。

using System;    public class A      {                public  A()          {             Console.WriteLine("A");          }          public virtual void Fun()          {             Console.WriteLine("A.Fun()");          }      }      public class B : A      {                public B()          {             Console.WriteLine("B");          }          public new void Fun()          {             Console.WriteLine("B.Fun()");          }                public static void Main()          {                      A a = new A();     //A            a.Fun();          //A.Fun();            B b = new B();    //A  B  创建子类对象时,先调用父类构造函数,再调用子类构造函数            b.Fun();          //B.Fun();            a = b;            a.Fun();          //A.Fun();            (a as B).Fun();   //B.Fun();            (a as A).Fun();   //A.Fun();            Console.ReadKey();          }      }
(2)重写
将父类方法定义为虚方法,子类重写同名方法后,通过父类变量调用哪个方法由对象变量引用的真实对象决定,而与变量自身所属的类型无关。

using System;        public class A          {                    public  A()              {                 Console.WriteLine("A");              }              public virtual void Fun()              {                 Console.WriteLine("A.Fun()");              }          }          public class B : A          {                    public B()              {                 Console.WriteLine("B");              }                    public override void Fun()              {                 Console.WriteLine("B.Fun()");              }              public static void Main()              {                          A a = new A();     //A                a.Fun();          //A.Fun();                B b = new B();    //A  B                b.Fun();          //B.Fun();                a = b;                a.Fun();          //B.Fun();                (a as B).Fun();   //B.Fun();                (a as A).Fun();   //B.Fun();                Console.ReadKey();              }          }

转载地址:http://uxzrf.baihongyu.com/

你可能感兴趣的文章
Set、WeakSet、Map以及WeakMap结构基本知识点
查看>>
【NLP学习笔记】(一)Gensim基本使用方法
查看>>
【NLP学习笔记】(二)gensim使用之Topics and Transformations
查看>>
【深度学习】LSTM的架构及公式
查看>>
【深度学习】GRU的结构图及公式
查看>>
【python】re模块常用方法
查看>>
剑指offer 19.二叉树的镜像
查看>>
剑指offer 20.顺时针打印矩阵
查看>>
剑指offer 21.包含min函数的栈
查看>>
剑指offer 23.从上往下打印二叉树
查看>>
剑指offer 25.二叉树中和为某一值的路径
查看>>
剑指offer 26. 数组中出现次数超过一半的数字
查看>>
剑指offer 27.二叉树的深度
查看>>
剑指offer 29.字符串的排列
查看>>
剑指offer 31.最小的k个树
查看>>
剑指offer 32.整数中1出现的次数
查看>>
剑指offer 33.第一个只出现一次的字符
查看>>
剑指offer 34.把数组排成最小的数
查看>>
剑指offer 35.数组中只出现一次的数字
查看>>
剑指offer 36.数字在排序数组中出现的次数
查看>>