zoukankan      html  css  js  c++  java
  • 关于C#重写,隐藏的一些事

    第一次开始写技术博客,不知该从何处下手,本人算是菜鸟一枚,每每看到博客园里面的大牛们分享的技术文章,只能望其项背,高不可攀。但细细想来,若不尝试着从小处从低处慢慢去积累分享,想要成为技术大牛也只能沦为泡影。所以,just do it。

    c#面试过程中重写(override),隐藏(new)之间的区别算是经常被问到,下面将举个栗子来演示一下。

     1、新建一个Person类,里面有个Say()方法,用virtual修饰可被子类重写或隐藏。

    2、再建一个Teacher类继承于Person类,重写(override)Say()方法。

    3、再建一个Student类继承于Person类,隐藏(new)Say()方法。

         

    4、我们在Main方法中进行调用

    执行结果如下:

               

    分析:

          1、实例化一个Person对象person,第一次调用Say()时,调用的是自身的say(),输出: I am a Person;

          2、实例化一个Teacher对象teacher,由于Teacher类重写(override)父类Person中的Say()方法,执行的是重写之后的Say(),所以输出:I am a teacher;

          3、实例化一个Student对象student,执行的后输出:I am a student;

          4、当person指向一个Teacher实例时,编译时person调用Say()实则运行时调用的是重写之后的Say();

               而当person指向一个Student实例时,编译时person调用Say(),运行时调用的是自身的Say();说明Student中的Say()是一个全新的方法,对Person对象隐藏,Person对象只能访问自己的Say()。

    总结:

          1、子类通过New关键字修饰的方法将对分类隐藏,是子类一个全新的方法,父类将不能调用;

          2、子类重写父类中的方法,子类和父类调用的都将是子类override修饰的方法。

     

  • 相关阅读:
    P1311 选择客栈 模拟 ( + st表)
    P2656 采蘑菇 tarjan + spfa
    送别
    10.16互测题 贪心+数论
    poj 2823 Sliding Window 单调队列
    P1036 选数 dfs
    P3370 【模板】字符串哈希
    A Tear or A Smile?
    KMP 算法
    jQuery 中 attr 和 prop 的区别
  • 原文地址:https://www.cnblogs.com/ccnu0641/p/5259695.html
Copyright © 2011-2022 走看看