abstract class myFirst
{
int value_myFirst;
public myFirst(int f)
{
value_myFirst = f;
}
//抽象方法没有方法体,以分号结尾
public abstract void f1();
public void f2()
{
System.Console.WriteLine("myFirst.f2()!");
}
public virtual void f3()
{
System.Console.WriteLine("myFirst.f3()!");
}
}
class mySecond : myFirst
{
int value_mySecond;
public mySecond(int s)
: base(s)
{
value_mySecond = s;
}
//覆盖基类的抽象方法
public override void f1()
{
System.Console.WriteLine("mySecond.f1()!");
}
//覆盖基类的一般方法
public new void f2()
{
System.Console.WriteLine("mySecond.f2()!");
}
//覆盖基类的虚方法
public override void f3()
{
System.Console.WriteLine("mySecond.f3()!");
}
}
class Program
{
static void Main(string[] args)
{
//抽象类和接口不能声明对象
//myFirst mf = new myFirst(1);
mySecond ms = new mySecond(2);
ms.f1();
ms.f2();
ms.f3();
//这里向上转型采用强类型转换的方式
((myFirst)ms).f1();
((myFirst)ms).f2();
((myFirst)ms).f3();
}
}
{
int value_myFirst;
public myFirst(int f)
{
value_myFirst = f;
}
//抽象方法没有方法体,以分号结尾
public abstract void f1();
public void f2()
{
System.Console.WriteLine("myFirst.f2()!");
}
public virtual void f3()
{
System.Console.WriteLine("myFirst.f3()!");
}
}
class mySecond : myFirst
{
int value_mySecond;
public mySecond(int s)
: base(s)
{
value_mySecond = s;
}
//覆盖基类的抽象方法
public override void f1()
{
System.Console.WriteLine("mySecond.f1()!");
}
//覆盖基类的一般方法
public new void f2()
{
System.Console.WriteLine("mySecond.f2()!");
}
//覆盖基类的虚方法
public override void f3()
{
System.Console.WriteLine("mySecond.f3()!");
}
}
class Program
{
static void Main(string[] args)
{
//抽象类和接口不能声明对象
//myFirst mf = new myFirst(1);
mySecond ms = new mySecond(2);
ms.f1();
ms.f2();
ms.f3();
//这里向上转型采用强类型转换的方式
((myFirst)ms).f1();
((myFirst)ms).f2();
((myFirst)ms).f3();
}
}