zoukankan      html  css  js  c++  java
  • 关于C#中虚方法重载的说明

    < DOCTYPE html PUBLIC -WCDTD XHTML StrictEN httpwwwworgTRxhtmlDTDxhtml-strictdtd>
    首先请大家看看下面的例子,
    using System;

    abstract public class contact
    {
          public virtual string prinf()
          {
              return ("这是虚方法");
          }
    }

    public class class1:contact
    {
           public string prinf()
           {
                  return ("这是新的方法");//但这会出现编译警告,因为已经从contact那继承了一个同名方法
           }
    }
    想要通过编译,只需将prinf的声明改为
    public override string prinf()

    public new string prinf()
    但是这两种声明方式是有区别的,
    请看下面的例子:
    using System;

    abstract public class contact
    {
          public virtual string prinf()
          {
              return ("这是虚方法");
          }
    }

    public class class1:contact
    {
           public override string prinf()
           {
                  return ("这是新的方法");   
            }
    }
    public class class2:contact
    {
           public new string prinf()
           {
                  return ("这是另一个新的方法");   
            }
    }
    public class text
    {
            public static void Main()
            {
                  contact [] contacts=new contact [2];
                  contacts[0]=new class1;
                  contacts[1]=new class2;
                  foreach(contact ct in contacts)
                  {
                        Console.WriteLine(ct.printf);
                   }
             }
    }

    最后我们看到的结果是

    这是新的方法
    这是虚方法


    而没有看见“这是另一个新的方法”,这是因为class2没有重载虚方法,而是重新定义了一个方法!
    这就是两者的区别!!!
  • 相关阅读:
    计算机网络
    git学习总结
    MySQL性能优化的21条最佳经验【转】
    为什么Laravel是最成功的PHP框架?
    分布式集群系统下的高可用session解决方案
    浏览器中输入URL到返回页面的全过程
    真正的inotify+rsync实时同步 彻底告别同步慢
    memcache中的add和set方法区别
    php 接口 implements 使用
    Redis的PHP操作手册(自用)
  • 原文地址:https://www.cnblogs.com/netcorner/p/2912319.html
Copyright © 2011-2022 走看看