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没有重载虚方法,而是重新定义了一个方法!
    这就是两者的区别!!!
  • 相关阅读:
    实战体会Java的多线程编程
    java synchronized用法
    java thread代码
    java简单线程池实例代码
    visual studio 配色方案的设置及需注意的问题
    【转】 Response.Redirect(),Server.Transfer(),Server.Execute()的区别
    Button.PerformClick 仅支持winform,可模拟按钮点击
    Codeforces Round #118 (Div. 2) B题(Codeforces上不支持qsort,只支持sort!!!)
    hdu4324(拓扑排序&强连通)
    三分法——求解凸性函数的极值问题
  • 原文地址:https://www.cnblogs.com/netcorner/p/2912319.html
Copyright © 2011-2022 走看看