C#方法的重写

时间:2020-12-19 23:45:12

问题一:什么是重写?

“重写”父类方法就是修改它的实现方式或者说在子类中对它进行重新编写。

问题二:为什么要重写父类的方法

     通常,子类继承父类的方法,在调用对象继承方法的时候,调用和执行的是父类的实现。但是,有时候需要

     对子类中的继承方法有不同的实现方式。例如,假设动物存在“跑”的方法,从中继承有狗类和马类两个子

     问题三:如何重写

     a.重写父类的方法要用到override关键字(具有override关键字修饰的方法是对父类中同名方法的新实现)

     b.要重写父类的方法,前提是父类中该要被重写的方法必须声明为virtual或者是abstract类型。给父类中

     要被重写的方法添加virtual关键字表示可以在子类中重写它的实现。(注意:C#中的方法默认并不是

     virtual类型的,因此要添加virtual关键字才能够被重写)

     C.virtual关键字用于将方法定义为支持多态,有virtual关键字修饰的方法称为“虚拟方法”

      [访问修饰符] virtual [返回类型] 方法名(参数列表)

     {

     //虚拟方法的实现,该方法可以被子类重写

     }

     下面创建控制台应用程序:

1namespace inheritDemo2
{
class Employee
{
public virtual void EmpInfo()
{
Console.WriteLine("用virtual关键字修饰的方法是虚拟方法");
}
}
class DervEmployee : Employee
{
public override void EmpInfo()
{
base.EmpInfo();//base关键字将在下面拓展中提到
Console.WriteLine("该方法重写base方法");
}
}
class Test
{
static void Main(string[] args)
{
DervEmployee objDervEmployee = new DervEmployee();
objDervEmployee.EmpInfo();
//注意:objDervEmployee派生类的实例是赋给Employee类的objEmployee的引用,
// 所以objEmployee引用调用EmpInfo()方法时 还是调用DervEmployee类的方法
Employee objEmployee = objDervEmployee;
objEmployee.EmpInfo();
}
}
}

拓展:base关键字用于从子类中访问父类成员。即使父类的方法在子类中重写,仍可以使用base关键字调用。

                而且,在创建子类实例时,可以使用base关键字调用父类的构造函数。使用base关键字只能访问父类的构造

                函数、实例方法或实例属性,而不能访问基类的静态方法。

C#方法的重写的更多相关文章

  1. .NET 基础 一步步 一幕幕[面向对象之方法、方法的重载、方法的重写、方法的递归]

    方法.方法的重载.方法的重写.方法的递归 方法: 将一堆代码进行重用的一种机制. 语法: [访问修饰符] 返回类型 <方法名>(参数列表){ 方法主体: } 返回值类型:如果不需要写返回值 ...

  2. C&num;-面向对象的三大特性——多态(虚方法与重写、抽象类、接口)

    多态 同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果.在运行时,可以通过指向基类的指针,来调用实现派生类中的方法. 编译时的多态性:编译时的多态性是通过重载来实现的.对于非虚的成员来说 ...

  3. 《Java中方法的重写》

    //方法的重写 /* 注意:方法的重写要遵循“两同两小一大”规则 “两同”即方法名相同.形参列表相同: “两小”(1)指的是子类方法返回值类型比父类方法的返回值类型更小或相等,[什么意思?] (2)子 ...

  4. 自定义HttpMessageHandler实现HTTP方法的重写

    自定义HttpMessageHandler实现HTTP方法的重写

  5. 多态,虚拟方法,重写,接口,类库,委托,is,as运算符,泛型集合,万能变量

    多态:简而言之就是龙生九子,各有不同 有了继承,才有了多态 1.虚方法 virtual重写 override父类中的方法,在子类中并不适用,那么子类需要自主更改继承的方法或者是属性,那父类中加了vir ...

  6. Objective-C 类的继承、方法的重写和重载

    一.类的继承 Objective-c中类的继承与C++类似,不同的是Objective-c不支持多重继承,一个类只能有一个父类,单继承使Objective-c的继承关系很简单,易于管理程序.Objec ...

  7. C&num; 读书笔记之访问虚方法、重写方法和隐藏方法

    C#允许派生类中的方法与基类中方法具有相同的签名:基类中使用关键字virtual定义虚方法:然后派生类中使用关键字override来重写方法,或使用关键字new来覆盖方法(隐藏方法). 重写方法用相同 ...

  8. &lbrack;Android&rsqb; 获取WebView的页面标题&lpar;Title&rpar;-----WebChromeClient&period;onReceivedTitle&lpar;&rpar;方法的重写

    应用开发中需要获取WebView当前页面的标题,可能通过对WebChromeClient.onReceivedTitle()方法的重写来实现 效果图如下: 代码如下: public class Mai ...

  9. C&num;隐藏(new)方法和重写(override)方法

    在基类调用的时候 隐藏方法还是调用基类的方法 而重写方法调用的就是子类的中的方法 同时,当子类中的方法与父类或者所实现的接口中的扩展方法冲突时,那么此时相当于一个隐藏方法 基类调用或者接口调用的时候使 ...

  10. java 子类继承父类成员变量的隐藏、实现方法的重写

    成员变量的隐藏和方法的重写 Goods.java public class Goods { public double weight; public void oldSetWeight(double ...

随机推荐

  1. 山东省第七届ACM省赛------Memory Leak

    Memory Leak Time Limit: 2000MS Memory limit: 131072K 题目描述 Memory Leak is a well-known kind of bug in ...

  2. Python tab键自动补齐

    1.进入root家目录  建立.tab文件 .tab文件内容如下: ############################################## import sys import r ...

  3. Greedy&colon;Sum of Consecutive Prime Numbers&lpar;POJ 2739&rpar;

     素数之和 题目大意:一些整数可以表示成一个连续素数之和,给定一个整数要你找出可以表示这一个整数的连续整数序列的个数 方法:打表,然后用游标卡尺法即可 #include <iostream&gt ...

  4. css 常用样式

    1. border-radius - 指定每个圆角 四个值: 第一个值为左上角,第二个值为右上角,第三个值为右下角,第四个值为左下角. 三个值: 第一个值为左上角, 第二个值为右上角和左下角,第三个值 ...

  5. PhpStorm&comma; XDebug&comma; and DBGp Proxy

    phpstorm 利用 xdebug.dbgp-proxy配置远程调试 1.单客户机远程调试 a.安装xdebug库文件(windows:php_xdebug.dll;linux:php_xdebug ...

  6. 我不知道你是在一个多线程out该--【ITOO】

    仍向系统负载作出太慢.卡而发愁太?我不知道多线程,你们out该.最近花了大约两三天.多-threaded.通过团队的交流,多线程有更深入的思考.希望可以加入ITOO目里面,优化一下系统性能. 概念 线 ...

  7. 201521123073 《Java程序设计》第7周学习总结

    1. 本周学习总结 以你喜欢的方式(思维导图或其他)归纳总结集合相关内容. 参考资料: 2. 书面作业 1.ArrayList代码分析 1.1 解释ArrayList的contains源代码 源代码: ...

  8. ERROR&colon; Got error reading packet from server&colon; A slave with the same server&lowbar;uuid&sol;server&lowbar;id as this slave has connected to the master

    centos7.5 做binlog-server,拉取主库binlog报错 问题: [root@db03-53 binlog]# mysqlbinlog -R --host=10.0.0.55 --u ...

  9. Java中byte、short、char、int、long运算时自动类型转化问题

    -------------------------------------------------------------------------------------------------- ★ ...

  10. 浏览器json数据格式化

    在浏览器上作接口测试的时候看到json 格式的数据是密密麻麻的一片,眼睛都花了..  如: 设置方法:  chrome  的右上角选择,然后---  更多工具---  扩展程序  ----   JSO ...