黑马程序员技术交流社区

标题: 虚方法 [打印本页]

作者: 佟嘉豪    时间: 2013-11-4 19:22
标题: 虚方法
  1. namespace 虚方法
  2. {
  3.     public class Daddy
  4.     {
  5.         public virtual void Play()//虚方法
  6.         {
  7.             Console.WriteLine("Daddy");
  8.         }
  9.     }
  10.     public class Son1 : Daddy
  11.     {
  12.         //public new void Play()//没有加override
  13.         //{
  14.         //    Console.WriteLine("Son1");
  15.         //}
  16.         public void Play()//没有加override//这里为什么提示加new 不明白
  17.         {
  18.             Console.WriteLine("Son1");
  19.         }
  20.     }
复制代码

作者: 张小康    时间: 2013-11-4 20:31
因为不使用重写的话,相当于之类的方法和父类的方法重名
所以会提示用new
表示故意要隐藏父类的方法
作者: 许庭洲    时间: 2013-11-4 20:57
1. 当类中的方法声明前加上了virtual修饰符, 我们称之为虚方法,反之为非虚;
2. 使用了virtual修饰符号后,不允许再有static, abstract,或override修饰符;
3. 在派生类中声明对虚方法的重载,要求在声明中加上override关键字,而且不能有new, static或virtual修饰符。
作者: 念念念念_、    时间: 2013-11-5 00:40
同沙发!!!!
作者: hourglass    时间: 2013-11-5 01:46
子类中的方法与父类中虚方法的名称相同时,需要使用new关键字进行区分该方法与父类虚方法
作者: 岁月渲染    时间: 2013-11-5 10:37
1、虚方法的概念:

                         类中的方法声明前加上了virtual 修饰符,我们称之为虚方法;

                        如:  class A

                                              {

                                                    public virtual void F(){} //虚方法

                       }

                            virtual修饰符表明:该基类(本例中指A类)的派生类(本例中指B类)可以

重写该方法(本例中指方法F())。

                                          如:  class B:A

                                                        {

                                                               public override void F(){} //派生类B重写类A的虚

方法F()

}



                与之相对的,没有用virtual 修饰符,我们称之为非虚方法。






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