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.

  • 相关阅读:
    平时十六测
    平时十五测
    平时十四测
    poj 1486 Sorting Slides
    POJ 3621Sightseeing Cows
    POJ 2728 Desert King
    POJ3111 K Best
    NOIopenjudge 407:Heritage
    POJ#2065. SETI
    HDU 4607 Park Visit
  • 原文地址:https://www.cnblogs.com/cindyLu/p/3182323.html
Copyright © 2011-2022 走看看