• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

c#虚方法(virtual)和抽象方法(abstract)的区别

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

相同点:

虚方法(virtual)和抽象方法(abstract)都可以被派生类重写

不同点:

1.虚方法(virtual)有方法实体,抽象方法(abstract)没有方法实体【类似接口】

virtual void SayWord()
{
//代码
}
abstract void SayWord();
 2.虚方法(virtual)在派生类中可以不重写,抽象方法(abstract)派生类中必须重写【类似接口】
abstract class Person
{
abstract void SayName();
}
class Man:Person
{
override void SayName()
{
//方法实体
}
}
 3.抽象方法(abstract)必须声明在抽象类中


下面给出实例代码:
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;
}
}


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
c++ json cpp发布时间:2022-07-13
下一篇:
c语言 相关小知识发布时间:2022-07-13
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap