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.

  • 相关阅读:
    csp-s测试41 T2 影子
    模拟测试15 T3:rps (概率期望, 神*DP)
    考试沙币错误
    测试40
    水管局长 Lct
    测试32:chemistry
    测试35:抽卡
    模拟30,树
    考试策略&&模拟30经验总结:
    模拟测试28
  • 原文地址:https://www.cnblogs.com/cindyLu/p/3182323.html
Copyright © 2011-2022 走看看