C#的抽象类中,抽象方法和纯虚函数区别
1.C#中有没有纯虚函数的说法?即能否定义virtualvoidtest()=0;2.如果有,C#的抽象类中定义的抽象方法如:publicabstractvoidtest...
1.C#中有没有纯虚函数的说法?即能否定义 virtual void test()=0;
2.如果有,C#的抽象类中定义的抽象方法如:public abstract void test();
和抽象类中定义的纯虚函数有什么区别?? 展开
2.如果有,C#的抽象类中定义的抽象方法如:public abstract void test();
和抽象类中定义的纯虚函数有什么区别?? 展开
5个回答
展开全部
问题1:含有virtual修饰符的方法称为虚拟方法。不能像你说的那样定义。
问题2:
1)虚拟方法,子类可以选择性重写此方法,也可以不重写;而抽象(abstract
)方法,子类必须重写。
2)虚拟方法可以有实体,如:
public virtual void Vt()
{
Console.WriteLine("A");
}
所以,可以直接调用虚拟方法;而抽象方法不能声明方法实体,public abstract void Ab(),不能直接调用。
3)虚方法可以实现多态,而抽象方法不可以
如果一个类被声明为abstract,
则在该抽象类中,可以存在没有实现的方法,但该方法须声明为abstract,
在其子类中,通过override关键字修辞并包含具体的实现
抽象类中的虚方法使用virtual关键字描述,并在子类中实现
与抽象方法不同的是,虚方法可以有具体的实现,而抽象方法不可以有实现,
类似于接口中规范的定义
问题2:
1)虚拟方法,子类可以选择性重写此方法,也可以不重写;而抽象(abstract
)方法,子类必须重写。
2)虚拟方法可以有实体,如:
public virtual void Vt()
{
Console.WriteLine("A");
}
所以,可以直接调用虚拟方法;而抽象方法不能声明方法实体,public abstract void Ab(),不能直接调用。
3)虚方法可以实现多态,而抽象方法不可以
如果一个类被声明为abstract,
则在该抽象类中,可以存在没有实现的方法,但该方法须声明为abstract,
在其子类中,通过override关键字修辞并包含具体的实现
抽象类中的虚方法使用virtual关键字描述,并在子类中实现
与抽象方法不同的是,虚方法可以有具体的实现,而抽象方法不可以有实现,
类似于接口中规范的定义
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
如果一个类被声明为abstract,
则在该抽象类中,可以存在没有实现的方法,但该方法须声明为abstract,
在其子类中,通过override关键字修辞并包含具体的实现
抽象类中的虚方法使用virtual关键字描述,并在子类中实现
与抽象方法不同的是,虚方法可以有具体的实现,而抽象方法不可以有实现,
类似于接口中规范的定义
则在该抽象类中,可以存在没有实现的方法,但该方法须声明为abstract,
在其子类中,通过override关键字修辞并包含具体的实现
抽象类中的虚方法使用virtual关键字描述,并在子类中实现
与抽象方法不同的是,虚方法可以有具体的实现,而抽象方法不可以有实现,
类似于接口中规范的定义
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
1.没有你说的纯虚函数,但是可以用委托通过匿名函数达到类似的效果。比如使用lambda表达式,x => x * 6指定名为x的参数并返回x的值计算的。如下面的示例所示,可以将此表达式传递给委托类型:
delegate int del(int i);
static void Main(string[] args)
{
del myDelegate = x => x * 6;
int j = myDelegate(5); //j = 30
}
2. 虚方法必须有实现部分,并为派生类提供了覆盖该方法的选项;
抽象方法没有提供实现部分,抽象方法是一种强制派生类覆盖的方法,否则派生类将不能被实例化。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2015-07-21 · 知道合伙人软件行家
关注
展开全部
高质量认证每次进来都是好几年之前的问题了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询