class myFirst
{
int value_myFirst;
public myFirst(int f)
{
value_myFirst = f;
}
public void f1()
{
System.Console.WriteLine("myFirst.f1()!");
}
public virtual void f2()
{
System.Console.WriteLine("myFirst.f2()!");
}
}
class mySecond : myFirst
{
int value_mySecond;
public mySecond(int s)
: base(s)
{
value_mySecond = s;
}
//使用关键字new覆盖基类中的同名方法
public new void f1()//new也可以提到最前面
{
System.Console.WriteLine("mySecond.f1()");
}
//基类函数中声明是virtual,必须用override覆盖
public override void f2()//override也可以提到最前面
{
System.Console.WriteLine("mySecond.f2()!");
}
}
class Program
{
static void Main(string[] args)
{
myFirst mf = new myFirst(1);
mySecond ms = new mySecond(2);
mf.f1();
mf.f2();
ms.f1();
ms.f2();
mf = ms;
mf.f1();
mf.f2();
//如果 是new,那么结果是myFirst.f2()
Console.Read();
}
}
{
int value_myFirst;
public myFirst(int f)
{
value_myFirst = f;
}
public void f1()
{
System.Console.WriteLine("myFirst.f1()!");
}
public virtual void f2()
{
System.Console.WriteLine("myFirst.f2()!");
}
}
class mySecond : myFirst
{
int value_mySecond;
public mySecond(int s)
: base(s)
{
value_mySecond = s;
}
//使用关键字new覆盖基类中的同名方法
public new void f1()//new也可以提到最前面
{
System.Console.WriteLine("mySecond.f1()");
}
//基类函数中声明是virtual,必须用override覆盖
public override void f2()//override也可以提到最前面
{
System.Console.WriteLine("mySecond.f2()!");
}
}
class Program
{
static void Main(string[] args)
{
myFirst mf = new myFirst(1);
mySecond ms = new mySecond(2);
mf.f1();
mf.f2();
ms.f1();
ms.f2();
mf = ms;
mf.f1();
mf.f2();
//如果 是new,那么结果是myFirst.f2()
Console.Read();
}
}