黑马程序员技术交流社区

标题: abstract 和virtual的去别?? [打印本页]

作者: 程艳伟    时间: 2012-7-9 15:17
标题: abstract 和virtual的去别??
abstract 和virtual的去别??:)
作者: 许庭洲    时间: 2012-7-9 15:27
1,virtual 关键字用于修饰方法、属性、索引器或事件声明,并且允许在派生类中重写这些对象。例如,此方法可被任何继承它的类重写;
2,abstract 修饰符可以和类、方法、属性、索引器及事件一起使用。在类声明中使用 abstract 修饰符以指示某个类只能是其他类的基类;
3,虚函数(Virtual)已经包含了也必须包含默认的实现,所以在派生类中可以重新实现也可以不实现这些虚函数;
4,抽象函数(abstract)没有提供默认实现,所以在派生类中必须实现这些抽象函数。
作者: 程艳伟    时间: 2012-7-9 15:40
哦,对了,以前学的忘记了,谢谢
作者: 刘玺    时间: 2012-7-9 16:27
1.abstract方法只能在抽象类中声明,虚方法则不是。
   abstract方法必须在派生类中重写,而virtual则不必。
2.abstract方法不能声明方法实体,
      abstract public void SD();
   虚方法则可以
      public virtual void sdf()
        {
            Console.WriteLine("A");
        }
3.虚方法可以实现多态,而抽象方法不可以。
作者: 许楠    时间: 2012-7-9 16:57
virtual 关键字用于在基类中修饰方法。abstract关键字只能用在抽象类中修饰方法,并且没有具体的实现。
作者: 魏振龙    时间: 2012-7-9 19:00
abstract声明抽象类、抽象方法
1.抽象方法所在类必须为抽象类
2.抽象类不能直接实例化,必须由其派生类实现。
3.抽象方法不包含方法主体,必须由派生类以override方式实现此方法,这点跟interface中的方法类似

virtual标记方法为虚方法
1.可在派生类中以override覆盖此方法
2.不覆盖也可由对象调用
3.无此标记的方法(也无其他标记),重写时需用new隐藏原方法

abstract 与virtual 方法重写时都使用 override




作者: 朱灿    时间: 2012-7-9 19:04
Virtual方法
virtual 关键字用于在基类中修饰方法。virtual的使用会有两种情况
1:在基类中定义了virtual方法,但在派生类中没有重写该虚方法。那么在对派生类实例的调用中,该虚方法使用的是基类定义的方法
2:在基类中定义了virtual方法,然后在派生类中使用override重写该方法。那么在对派生类实例的调用中,该虚方法使用的是派生重写的方法
Abstract方法
abstract关键字只能用在抽象类中修饰方法,并且没有具体的实现。抽象方法的实现必须在派生类中使用override关键字来实现




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2