A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 佟嘉豪 中级黑马   /  2013-11-4 19:22  /  2129 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  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.     }
复制代码

5 个回复

倒序浏览
因为不使用重写的话,相当于之类的方法和父类的方法重名
所以会提示用new
表示故意要隐藏父类的方法
回复 使用道具 举报
1. 当类中的方法声明前加上了virtual修饰符, 我们称之为虚方法,反之为非虚;
2. 使用了virtual修饰符号后,不允许再有static, abstract,或override修饰符;
3. 在派生类中声明对虚方法的重载,要求在声明中加上override关键字,而且不能有new, static或virtual修饰符。
回复 使用道具 举报
同沙发!!!!
回复 使用道具 举报
子类中的方法与父类中虚方法的名称相同时,需要使用new关键字进行区分该方法与父类虚方法
回复 使用道具 举报
1、虚方法的概念:

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

                        如:  class A

                                              {

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

                       }

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

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

                                          如:  class B:A

                                                        {

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

方法F()

}



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

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马