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没有重载虚方法,而是重新定义了一个方法!
    这就是两者的区别!!!
  • 相关阅读:
    sql server登录账户看不到sql server代理和维护计划
    Redis(1.19)redis内存消耗、redis内存优化
    【最佳实践】bat实现自动化运行sql
    Redis(1.18)redis阻塞分析
    某机场网络环境分析
    【js】setInterval是个坑!chrome定时截图保存实现
    【操作系统】CPU中的时间片的概念
    Jeff Atwood:软件工程已死?
    vscode配置 eslint+prettierrc自动格式化vue3、ts、tsx文件
    基于.NET的大型Web站点StackOverflow架构分析
  • 原文地址:https://www.cnblogs.com/netcorner/p/2912319.html
Copyright © 2011-2022 走看看