类的多态性、虚函数示例
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();
}
}
}
加深对多态的了解
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();
}
}
}
加深对多态的了解
相关文章推荐
- 类的虚函数和多态性
- 第十三周任务一(通过程序分析理解虚函数, 多态性和抽象类)
- C++虚函数和多态性的关系【virtual】之二
- C++之多态性与虚函数
- c++ 虚函数和多态性
- 多态性和虚函数
- 多态性与虚函数
- c++ 继承 多重继承 多态性 虚函数
- C++语言--多态性-8.1----多重继承、虚基类、虚函数和纯虚函数
- 第十四周--多态性、虚函数和抽象类(5)
- (转)C++多态性与虚函数
- c++--多态性与虚函数
- 虚函数—类的多态性
- C++ 多态性与虚函数
- C++之多态性与虚函数
- C++编程思想杂记(15章 多态性和虚函数)
- [022]c++虚函数、多态性与虚表
- C++虚函数探索笔记(1)——虚函数的简单示例分析
- 多态性和虚函数
- 第十三周实验报告(任务一)【虚函数、多态性、抽象类】