作用:标示类型
父类:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Diagnostics;
namespace TestAppAllHere
{
abstract class TestAbstractSuper
{
public TestAbstractSuper()
{
Debug.WriteLine("1这是父类的构造方法");
}
public abstract void Init();
public void Hello()
{
Debug.WriteLine("4这是父类的非抽象方法");
}
}
}
子类:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Diagnostics;
namespace TestAppAllHere
{
class TestAbstractSub:TestAbstractSuper
{
public TestAbstractSub()
{
Debug.WriteLine("2这是子类的构造方法");
}
public override void Init()
{
Debug.WriteLine("3这是子类重写的方法");
}
}
}
1这是父类的构造方法
2这是子类的构造方法
3这是子类重写的方法
4这是父类的非抽象方法
父类:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Diagnostics;
namespace TestAppAllHere
{
class TestVirtualSuper
{
public TestVirtualSuper()
{
Debug.WriteLine("1这是父类的构造方法");
}
public virtual void Init()
{
Debug.WriteLine("2这是父类的虚拟方法");
}
}
}
子类1:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Diagnostics;
namespace TestAppAllHere
{
class TestVirtualSub:TestVirtualSuper
{
public TestVirtualSub()
{
Debug.WriteLine("3这是子类的构造方法");
}
public override void Init()
{
//base.Init();//这句话可以让虚拟方法执行
Debug.WriteLine("4这是子类的重写方法");
}
}
}
1这是父类的构造方法
3这是子类的构造方法
4这是子类的重写方法