参照下面的代码看看:- class A
- {
- public void F() //非虚方法
- { Console.Write(" A.F"); }
- public virtual void G() //虚方法
- { Console.Write(" A.G"); }
- }
- class B : A //A类为B类的基类
- {
- new public void F() //重写基类的同名非虚方法F(),使用new
- { Console.Write(" B.F"); }
- public override void G() //覆盖基类的同名虚方法G(),使用override
- { Console.Write(" B.G"); }
- }
- class Test
- {
- static void Main()
- {
- B b = new B();
- A a = b; //因为B类继承于A类,所以可以用 A类的引用变量 来引用 B类的对象
- //也就相当于
- //int i;
- //object ob = i;
- a.F(); //F()在派生类中被new重写了,但在此还是调用基类A的F(),显示A.F
- a.G(); //G()在派生类中被override覆盖,也就隐藏了基类的G()方法,
- //所以调用的是派生类B中的G(),显示B.G
- }
- }
复制代码
|