c#虚方法(virtual)和抽象方法(abstract)的区别
相同点:
虚方法(virtual)和抽象方法(abstract)都可以被派生类重写
不同点:
1.虚方法(virtual)有方法实体,抽象方法(abstract)没有方法实体【类似接口】
virtual void SayWord()
{
//代码
}
abstract void SayWord();
abstract class Person
{
abstract void SayName();
}
class Man:Person
{
override void SayName()
{
//方法实体
}
}
下面给出实例代码:
class Program
{
static void Main(string[] args)
{
Cat cat = new Cat("小花","2");
cat.Eat();
//调用父类中的虚方法,如果派生类中重写则调用重写后的
cat.ShowName();
Console.ReadKey();
//最后输出结果是:
猫吃东西
我的名字是小花,今年2岁了
}
}
public abstract class Animal
{
protected string name;
public string Name
{
get { return name; }
set { name = value; }
}
protected string age;
public string Age
{
get { return age; }
set { age = value; }
}
/// <summary>
/// 虚方法
/// </summary>
public virtual void ShowName()
{
Console.WriteLine("我的名字是{0},今年{1}岁了", this.name,this.age);
}
/// <summary>
/// 抽象方法
/// </summary>
public abstract void Eat();
}
public class Cat : Animal
{
/// <summary>
/// 派生类必须重写父类中的抽象方法,否则会报错
/// </summary>
public override void Eat()
{
Console.WriteLine("猫吃东西");
}
public Cat(string name, string age)
{
this.name = name;
this.age = age;
}
}
posted on 2011-04-15 17:07 BarneyZhang 阅读(6415) 评论(2) 编辑 收藏 举报