A/B 多态演练

    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 B();
            a.Fun();
        }
    }

运行结果:

A

B

A.Fun()

 

    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 B();
            a.Fun();
        }
    }

运行结果:

A

B

B.Fun()

 

    class A
    {
        
public static int X;
        
static A()
        {
            X 
= B.Y + 1;
        }
    }
    
class B
    {
        
public static int Y = A.X + 1;
        
static B() { }
        
static void Main()
        {
            Console.WriteLine(
"X={0},Y={1}", A.X, B.Y);
        }
    }

运行结果:

X=1,Y=2

 

    class A
    {
        
public virtual void Fun1(int i)
        {
            Console.WriteLine(i);
        }

        
public void Fun2(A a)
        {
            a.Fun1(
1);
            Fun1(
5);
        }
    }

    
class B : A
    {
        
public override void Fun1(int i)
        {
            
base.Fun1(i + 1);
        }

        
public static void Main()
        {
            B b 
= new B();
            A a 
= new A();
            a.Fun2(b);
            b.Fun2(a);
        }
    }

运行结果:

2

5

1

6

 

    class A
    {
        
public virtual void Fun1(int i)
        {
            Console.WriteLine(i);
        }

        
public void Fun2(A a)
        {
            a.Fun1(
1);
            Fun1(
5);
        }
    }

    
class B : A
    {
        
public override void Fun1(int i)
        {
            
base.Fun1(i + 1);
        }

        
public static void Main()
        {
            A a 
= new B();
            B b 
= new B();
            a.Fun2(b);
            b.Fun2(a);
        }
    }

运行结果:

2

6

2

6

 

    class A
    {
        
public virtual void Fun1(int i)
        {
            Console.WriteLine(i);
        }

        
public void Fun2(A a)
        {
            a.Fun1(
1);
            Fun1(
5);
        }
    }

    
class B : A
    {
        
public override void Fun1(int i)
        {
            
base.Fun1(i + 1);
        }

        
public static void Main()
        {
            A a 
= new A();
            A b 
= new B();
            a.Fun2(b);
            b.Fun2(a);
        }
    }

运行结果:

2

5

1

6

 

 

posted on 2008-08-14 17:52  王丹小筑  阅读(321)  评论(1)    收藏  举报

导航