您的位置:首页 > 其它

类的多态性、虚函数示例

2008-03-11 09:13 134 查看
加深对类多态的了解

using System;
using System.Collections.Generic;

public class MyClass
{
#region 类的多态
/*
* 类的多态性、虚函数示例及隐藏方法
*(如果签名相同的方法在基类和派生类中都进行了明,但该方法没有声明为Virtual和override,派生类方法就会隐藏基类方法)
*/

public abstract class A
{
public A()
{
Console.WriteLine('A');
}
public virtual void Fun()
{
Console.WriteLine("A.Fun() ");
}
public void test()
{
Console.WriteLine("A+=jiayue");
}
}

public class B : A
{
public B()
{
Console.WriteLine('B');
}

public override void Fun()
{
Console.WriteLine("B.Fun() ");
}
//隐藏方法
public new void test()
{
Console.WriteLine("B+=jiayue");
}
}
#endregion

public class C : B
{
public C()
{
Console.WriteLine("C");
}

//public new void Fun()
public override void Fun()
{
Console.WriteLine("C.Fun()");
}

public static void Main()
{
A a = new B();
Console.WriteLine("a type is:{0} ", a.GetType().ToString());
a.Fun();
a.test();//调用隐藏方法
B bb = (B)a;
bb.Fun();
bb.test();//调用隐藏方法
Console.WriteLine("a type is:{0} ", bb.GetType().ToString());
B b = new B();
Console.WriteLine("a type is:{0} ", b.GetType().ToString());
b.Fun();
b.test();
//A aa = new A();
//aa.Fun();

C c = new C();
c.Fun();
c.test();//调用隐藏方法

b = (B)c;
b.Fun();
b.test();//调用隐藏方法

a = (A)c;
a.Fun();
a.test();//调用隐藏方法
Console.ReadLine();
}
}
}

加深对多态的了解
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: