我还是认为看几个例子会比较清晰明了;
实例1:
class Program
{
static void Main(string[] args)
{
Person p = new Chinese();
p.Name = "Chinese";
Console.WriteLine(p.Name);
p.MyMethod();
p.SayHello();
Console.ReadKey();
}
}
abstract class Person //抽象类
{
public string Name { set; get; } //非抽象属性
public abstract void MyMethod(); //抽象方法
public abstract void SayHello(); //抽象方法
}
class Chinese : Person
{
public override void MyMethod() //实现了MyMothod()方法
{
Console.WriteLine("我是中国人");
}
public override void SayHello() //实现了SayHello()方法
{
Console.WriteLine("你好!吃饭没?");
}
}
实例2
class Program
{
static void Main(string[] args)
{
BaseClass b = new DerivedClass();
Console.WriteLine(b.Area());
b.Name = "柳传智";
b.PrintArgument("杨中科");
Console.WriteLine(b.Name);
Console.ReadKey();
}
}
abstract class BaseClass
{
public abstract string Name { set; get; }
public abstract void PrintArgument(string s);
int width = 3,height=4; //抽象类中的非抽象成员
public int Area(){return width*height;} //非抽象方法
}
class DerivedClass : BaseClass
{
string name;
public override string Name
{
get
{
return name;
}
set
{
name = (value !="")? value : "无名氏";
}
}
public override void PrintArgument(string s)
{
Console.WriteLine(s);
}
}