zoukankan      html  css  js  c++  java
  • 关于c#继承

    如下代码所示:最后输出的是:8,3,7,4

    public class A
    {
    public virtual void One(int i)
    {
    Console.Write(i);
    }
    public virtual void Two(A a)
    {
    a.One(7);
    One(3);
    }
    }
    public class B : A 
    {
    public override void One(int i)
    {
    base.One(i+1);
    }
    }
    
    static void Main(string[] args)
    {
    A a = new A();
    B b = new B();
    a.Two(b);
    b.Two(a);
    
    }

    1、当 a调用Two方法的时候,传入进去的四b的实例,这时候就会调用b的One方法,从而输出8

    2、这是a当中的Two方法中的One,还是会调用a中的One方法,所以会输出3

    3、b.Two(a),出入a的实例。因为b是继承自a的,所以b也同样的有Two()方法,而b没有重写Two方法,所以还是调用父类a的Two方法,先执行a.One()输出7.

    4、当执行完a.One(),之后接着执行One(),这个时候,因为b重写了a中的One方法,所以会执行b中的One()方法。输出4.

  • 相关阅读:
    集合选数
    二分答案入门乱讲
    浅谈搜索剪枝
    数位DP
    RMQ问题与ST算法
    计数排序与基数排序
    主席树/函数式线段树/可持久化线段树
    树链剖分
    LCA问题
    树的直径、树的重心与树的点分治
  • 原文地址:https://www.cnblogs.com/cindyLu/p/3182323.html
Copyright © 2011-2022 走看看