抽象类就是指设计为被继承的类,抽闲类智能被用作其他类的基类。
●不能创建抽闲类的实例。
●抽闲类使用abstract修饰符声明。
●抽闲类可以包含抽象成员或普通的非抽象成员。抽象类的成员可以是抽象成员和普通带实现的成员的任意组合。
●抽象类自己可以派生自另一个抽象类。
●任何派生自抽象类的类必须使用override关键字实现该类所有的抽象成员,除非派生类自己也是抽象类。
示例1:
/// <summary>
/// 抽象类就是指设计为被继承的类,抽象类只能被用做其他类的基类
///1.不能创建抽象类的实例
///2.抽象类使用abstract修饰符声明。
///3.抽象类可以包含抽象成员或普通的非抽象成员。抽象类的成员可以是抽象成员和普通带实现的成员的任意组合。
/// </summary>
abstract class AbClass
{
public void IdentifyBase()
{
Console.WriteLine("I am AbClass.");
}
abstract public void Print();
}
abstract class MyAbClass : AbClass
{
abstract public void Print1();
}
class Program : MyAbClass
{
static void Main(string[] args)
{
AbClass abClass = new Program();
MyAbClass myAbClass = new Program();
abClass.IdentifyBase();
abClass.Print();
myAbClass.Print1();
Console.ReadKey();
}
public override void Print()
{
Console.WriteLine("====================");
}
public override void Print1()
{
Console.WriteLine("********************");
}
}
示例2:
abstract class MyBase
{
public int SideLength = 10;
const int TriangleSideCount = 3;
abstract public void PrintStuff(string s);
abstract public int MyInt { get; set; }
public int PerimeterLength()
{
return TriangleSideCount * SideLength;
}
}
class MyClass : MyBase
{
public override void PrintStuff(string s)
{
Console.WriteLine(s);
}
private int _myInt;
public override int MyInt
{
get
{
return _myInt;
}
set
{
_myInt = value;
}
}
}
class Program
{
static void Main(string[] args)
{
MyClass mc = new MyClass();
mc.PrintStuff("This is a string.");
mc.MyInt = 28;
Console.WriteLine(mc.MyInt);
Console.WriteLine("Perimeter Length:{0}", mc.PerimeterLength());
Console.ReadKey();
}
}