全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

详解C#用new和override来实现抽象类的重写区别

一,抽象的实现

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Virtualdemo
{
  class Program
  {
    static void Main(string[] args)
    {//BClass A = new BClass(); 抽象类无法被实例
      Class1 c = new Class1();
      BClass c2 = c;
      c2.MethodA();
      c.MethodA();
      c2.MethodB();
      c.MethodB();
      c2.MethodC();
      c.MethodC();
      Console.ReadKey();
    }
  }
  abstract class BClass  //抽象类无法被实例
  {
    public virtual void MethodA() { Console.WriteLine("BClassA"); }
    public virtual void MethodB() { Console.WriteLine("BClassB"); }
    public virtual void MethodC() { Console.WriteLine("BClassC"); }
  }
  class Class1 : BClass
  {
    public void MethodA() { Console.WriteLine("MethodA"); }//如果一个虚函数 在子类中没有通过override关键字,那么这个方法就没有被重写,而是被隐藏了
    public override void MethodB() { Console.WriteLine("MethodB"); }
    public override void MethodC() { base.MethodC(); }
  }
}

从上图得出的结果是:

综上:抽象类的虚方法需要被重写,那问题来了重写有两种方式,new和override又有什么区别

二,new和override重写的区别:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Virtualdemo
{
  class Program
  {
    static void Main(string[] args)
    {
      Teacher t = new Teacher();
      Student stu = t;
      stu.Exam();
      stu.Say();
      t.Say();
      Console.ReadKey();
    }
  }
  public abstract class Student
  {
    public virtual void Exam()
    {
      Console.WriteLine("学生都要考试");
    }
    public void Say()
    {
      Console.WriteLine("我是学生");
    }
  }
  public class Teacher : Student
  {
    public override void Exam()
    {
      Console.WriteLine("老师不用考试");
    }
    //public override void Say() //报错,提示没有virtual,无法被重写
    //{
    //  Console.WriteLine("我是老师");
    //}
    public new void Say()
    {
      Console.WriteLine("我是老师");
    }
  }
}

结果显示为:

综上总结:

1、如果基类没有定义虚方法,那子类只能使用new,而不能使用override

2、基类有没有定义虚方法,子类都可以使用new

3、子类使用new并不叫重写,而是子类新创建一个方法,只是新创建的这个方法刚好跟基类中的方法同名

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# c#  # new  # override  # override重写方法  # new和override  # C# 重写ComboBox实现下拉任意组件的方法  # C#重写DataGridView  # 在C#的类或结构中重写ToString方法的用法简介  # C#通过重写Panel改变边框颜色与宽度的方法  # c#方法重写和隐藏的学习示例  # c#重写TabControl控件实现关闭按钮的方法  # C#中重载与重写区别分析  # C#运算符重载用法实例分析  # C#中重载相等(==)运算符示例  # C#中多态、重载、重写区别分析  # C#重载运算符详解  # 基于C#方法重载的总结详解  # c# 重载WndProc  # 实现重写“最小化”的实现方法  # C#中重载重写和覆盖的定义与区别  # 重写  # 子类  # 我是  # 抽象类  # 类中  # 综上  # 来了  # 都要  # 又有  # 而不  # 可以使用  # 有两种  # 报错  # 不叫  # 创建一个  # 大家多多  # 上图  # 结果是  # 什么区别  # Main 


相关文章: 北京的网站制作公司有哪些,哪个视频网站最好?  购物网站制作费用多少,开办网上购物网站,需要办理哪些手续?  创业网站制作流程,创业网站可靠吗?  网站制作的步骤包括,正确网址格式怎么写?  青岛网站建设如何选择本地服务器?  魔方云NAT建站如何实现端口转发?  西安制作网站公司有哪些,西安货运司机用的最多的app或者网站是什么?  如何在阿里云域名上完成建站全流程?  如何通过远程VPS快速搭建个人网站?  网站制作说明怎么写,简述网页设计的流程并说明原因?  如何基于云服务器快速搭建个人网站?  潮流网站制作头像软件下载,适合母子的网名有哪些?  建站之星IIS配置教程:代码生成技巧与站点搭建指南  代购小票制作网站有哪些,购物小票的简要说明?  如何快速查询域名建站关键信息?  公司网站建设制作费用,想建设一个属于自己的企业网站,该如何去做?  合肥做个网站多少钱,合肥本地有没有比较靠谱的交友平台?  已有域名能否直接搭建网站?  html制作网站的步骤有哪些,iapp如何添加网页?  建站之星代理平台如何选择最佳方案?  如何处理“XML格式不正确”错误 常见XML well-formed问题解决方法  制作表格网站有哪些,线上表格怎么弄?  公司门户网站制作公司有哪些,怎样使用wordpress制作一个企业网站?  如何快速生成凡客建站的专业级图册?  如何快速搭建FTP站点实现文件共享?  C++ static_cast和dynamic_cast区别_C++静态转换与动态类型安全转换  专业制作网站的公司哪家好,建立一个公司网站的费用.有哪些部分,分别要多少钱?  如何获取PHP WAP自助建站系统源码?  如何在腾讯云服务器快速搭建个人网站?  如何快速打造个性化非模板自助建站?  如何自定义建站之星模板颜色并下载新样式?  网站制作软件免费下载安装,有哪些免费下载的软件网站?  如何制作算命网站,怎么注册算命网站?  如何快速重置建站主机并恢复默认配置?  常州自助建站费用包含哪些项目?  广州顶尖建站服务:企业官网建设与SEO优化一体化方案  高端企业智能建站程序:SEO优化与响应式模板定制开发  Dapper的Execute方法的返回值是什么意思 Dapper Execute返回值详解  如何选择网络建站服务器?高效建站必看指南  建站之星安装步骤有哪些常见问题?  北京网页设计制作网站有哪些,继续教育自动播放怎么设置?  如何在阿里云部署织梦网站?  建站ABC备案流程中有哪些关键注意事项?  如何在Golang中引入测试模块_Golang测试包导入与使用实践  企业网站制作费用多少,企业网站空间一般需要多大,费用是多少?  国美网站制作流程,国美电器蒸汽鍋怎么用官方网站?  如何选择高性价比服务器搭建个人网站?  测试制作网站有哪些,测试性取向的权威测试或者网站?  如何用IIS7快速搭建并优化网站站点?  昆明网站制作哪家好,昆明公租房申请网上登录入口? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。