美文网首页
c#之虚方法与隐藏方法的区别

c#之虚方法与隐藏方法的区别

作者: 困卡 | 来源:发表于2017-03-28 21:57 被阅读0次
    虚方法与隐藏方法定义

    重写(虚方法):继承时发生,在子类中重新定义父类中的方法,子类中的方法和父类的方法是一样的 例如:基类方法声明为virtual(虚方法),派生类中使用override申明此方法的重写.
    隐藏:基类方法不做申明(默认为非虚方法),在派生类中使用new声明此方法的隐藏。

    重写(virtaul)时,定义的变量为父类或子类, 赋值为子类时. 皆调用子类的重写方法;(会从子类中查找有重写则调用, 没有则调用基类方法)
    隐藏(new)时,定义的变量为父类则调用父类的方法(不管赋值是子类还是父类),定义的变量为子类则调用子类的方法。(使用场景: 当子类想取的一方法名称与父类相同时, 可以使用. 子类的方法与父类的方法相对来说是没有直接的关系(继承,重写==). )

    重写virtual(虚方法)示例 : (看方法后面的实例)
    class    A     
    {           
      public    virtual    void    F() 
          {
                      Console.WriteLine("A.F");
           }
    }     
    class    B:    A     
    {
           public    override    void    F()
           {
                        Console.WriteLine("B.F");
           }     
    }     
    class    Test     
    {           
      static    void    Main()             
       {
                 B    b    =    new    B();                 
        b.F();                 
        A    a    =    b;                   
        a.F();           
      }     
    }     
    输出为  :  B.F      B.F
    
    隐藏(new)示例:(看方法前面的声明)
       class    A  
       {  
             public    void    F()    
             {  
                   Console.WriteLine("A.F");    
             }  
       }  
       class    B:    A  
       {  
             new    public    void    F()    
             {    
                   Console.WriteLine("B.F");    
             }  
       }  
       class    Test  
       {  
             static void Main(string[] args)
             {  
                   B    b    =    new    B();  
                   b.F();  
                   A    a    =    b;    
                   a.F();  
             }  
       }  
       输出为  : B.F    A.F  
    

    相关文章

      网友评论

          本文标题:c#之虚方法与隐藏方法的区别

          本文链接:https://www.haomeiwen.com/subject/piedottx.html