C#.NET中的隐藏和重写(关键字new和override)
/*
* Created by SharpDevelop.
* User: noo
* Date: 2009-8-16
* Time: 16:40
*
* 隐藏和重写(关键字分别为new和override)
*/
using System ;
class newA
{
public virtual void output1()
{
Console.WriteLine ("基类方法1");
}
public void output2()
{
Console.WriteLine ("基类方法2");
}
}
class newB:newA
{
public override void output1()//对应的基类方法一定要用virtual关键字。这种方法叫重写基类方法。
{
Console.WriteLine ("重写基类方法1");
}
new public void output2()//对应的基类方法可用可不用virtual关键字。这种方法叫隐藏基类方法。
{
Console.WriteLine ("隐藏基类方法2");
}
}
class Test
{
static void Main()
{
newB b=new newB ();
newA a;
a=b;
a.output1 ();//调用B中的重写方法
a.output2 ();//调用A中的原始方法
b.output1 ();//调用B中的重写方法
b.output2 ();//调用B中的隐藏方法
newA aa=new newA ();
aa.output1 ();//调用A中的原始方法
aa.output2 ();//调用A中的原始方法
}
}
* Created by SharpDevelop.
* User: noo
* Date: 2009-8-16
* Time: 16:40
*
* 隐藏和重写(关键字分别为new和override)
*/
using System ;
class newA
{
public virtual void output1()
{
Console.WriteLine ("基类方法1");
}
public void output2()
{
Console.WriteLine ("基类方法2");
}
}
class newB:newA
{
public override void output1()//对应的基类方法一定要用virtual关键字。这种方法叫重写基类方法。
{
Console.WriteLine ("重写基类方法1");
}
new public void output2()//对应的基类方法可用可不用virtual关键字。这种方法叫隐藏基类方法。
{
Console.WriteLine ("隐藏基类方法2");
}
}
class Test
{
static void Main()
{
newB b=new newB ();
newA a;
a=b;
a.output1 ();//调用B中的重写方法
a.output2 ();//调用A中的原始方法
b.output1 ();//调用B中的重写方法
b.output2 ();//调用B中的隐藏方法
newA aa=new newA ();
aa.output1 ();//调用A中的原始方法
aa.output2 ();//调用A中的原始方法
}
}