c#中基类方法没有virtual ,可以被重写吗

就是由virtual,可以override没有virtual,只好new了,是这样吗??3带override关键字的,就是默认包括virtual的意思吗???也就是说只要... 就是由virtual ,可以override

没有virtual ,只好new了,是这样吗??

3

带 override 关键字的,就是默认包括virtual的意思吗???

也就是说只要一个方法是带virtual,从祖宗那里带

之后的关于这个方法,只要没有被new,一直可以override吗???无论多少代
展开
 我来答
青鸟中关村专家
推荐于2017-09-03 · 知道合伙人软件行家
青鸟中关村专家
知道合伙人软件行家
采纳数:1734 获赞数:8440
就职于北大青鸟中关村,自2004年踏入北大青鸟这个行业,已经有11年工作经验和8年的培训经验,寓教于乐

向TA提问 私信TA
展开全部

1、重写:继承时发生,在子类中重新定义父类中的方法,子类中的方法和父类的方法是一样的,即方法名,参数,返回值都相同。

    例如:基类方法声明为virtual(虚方法),派生类中使用override申明此方法的重写.

namespace 方法重写  
{  
    class Program  
    {  
   
        static voidMain(string[] args)  
        {  
            BaseClass CO =new ClassOverride();  
           CO.SetName("Override");  
        }  
//基类  
        public classBaseClass  
        {  
            public virtualvoid SetName(string name)  
            {  
               Console.WriteLine("基类:我的名字是" + name);  
            }  
        }  
   
//派生类  
        public classClassOverride : BaseClass  
        {  
            publicoverride void SetName(string name)  
            {  
               Console.WriteLine("Override:我的名字是" + name);  
            }  
        }  
   
    }  
}


2、重写override一般用于接口实现和继承类的方法改写,要注意:

          1)覆盖的方法的标志必须要和被覆盖的方法的名字和参数完全匹配,才能达到覆盖的效果。

          2)覆盖的方法的返回值必须和被覆盖的方法的返回一致。

          3)覆盖的方法所抛出的异常必须和被覆盖方法的所抛出的异常一致,或者是其子类。

          4)被覆盖的方法不能为private,否则在其子类中只是新定义了一个方法,并没有对其进行覆盖。


3、虚方法和抽象方法的区别


1)虚方法有一个实现部分可以被子类继承,从而使子类获得和基类相同的方法,另外也为派生类提供了覆盖该方法的选项。相反,抽象方法没有提供实现部分,是一种强制派生类覆盖的方法(否则派生类不能成具体类)


2)(abstract)抽象方法只能在抽象类中声明,(virtual)虚方法不是。

 

3)(abstract)抽象方法必须在派生类中重写而(virtual)虚方法不必。

 

4)(abstract)抽象方法不能声明方法实体,虚方法可以。



百度网友4c82cdcea
2009-07-06 · TA获得超过1123个赞
知道小有建树答主
回答量:1131
采纳率:0%
帮助的人:1305万
展开全部
抽象也可以,不然不能被重写,但可以用new关键字,让它变成另一个方法。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
微软专家张海
推荐于2016-02-20 · TA获得超过748个赞
知道小有建树答主
回答量:564
采纳率:100%
帮助的人:0
展开全部
不能重写非虚方法或静态方法。重写的基方法必须是 virtual、abstract 或 override 的。
http://msdn.microsoft.com/zh-cn/vstudio/ebca9ah3(VS.80).aspx
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友94f02eb
2009-07-06 · TA获得超过8613个赞
知道大有可为答主
回答量:7955
采纳率:74%
帮助的人:4496万
展开全部
不可以。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式