C重写(Override)详解,(您想了解的这儿都有)

C重写(Override)详解,(您想了解的这儿都有)一 重写的概念 二 重写的原因 三 重写的目的 四 重写的规则 五 重写的前提以及好处

一.重写的概念:

二.重写的原因:

如果父类中有一个方法,则子类中默认是不允许出现同名方法,如果出现了则系统认为是子类中要隐藏父类中的这个同名方法,那么在子类对象调用方法之后则调用到的是子类中的方法
如下代码所示:

1.调用子类继承父类中的方法:

 class Vecetables { 
    public void Fot(string a,int b) { 
    Console.WriteLine("我叫{0}是父类的第{1}个方法",a,b); } } class XC:Vecetables { 
    } class Program { 
    static void Main(string[] args) { 
    Vecetables ve = new Vecetables();//父类的对象 XC xc = new XC();//子类的对象 ve.Fot("张三",1);//父类的方法 xc.Fot("李四",1);//子类的方法 Console.ReadLine(); } } 

2.子类与父类有同名的方法:

如果子类与父类的方法同名,那么系统默认隐藏父类中的同名方法,实际调用之后使用的是子类自己的这个方法,但是会有警告,告诉我们应该使用new关键字专门进行隐藏,如下所示:

 class Vecetables { 
    public void Fot(string a,int b) { 
    Console.WriteLine("我叫{0}是父类的第{1}个方法",a,b); } } class XC:Vecetables { 
    public void Fot(string a, int b) { 
    Console.WriteLine("我叫{0}是子类的第{1}个方法", a, b); } } class Program { 
    static void Main(string[] args) { 
    Vecetables ve = new Vecetables();//父类的对象 XC xc = new XC();//子类的对象 ve.Fot("张三",1);//父类的方法 xc.Fot("李四",1);//子类的方法 Console.ReadLine(); } } 

3.对其继承的方法进行隐藏:

new关键字写于成员类型和名称之间,如下所示,则可以正常进行显示:

public new void Fot(string a, int b) { 
    Console.WriteLine("我叫{0}是子类的第{1}个方法", a, b); } 

在这里插入图片描述

三.重写的目的:

子类想放弃父类中的同名方法,在子类中声明一个新的方法逻辑,从而采用子类中的自己的方法,有时子类并不想原封不动地继承父类的方法,而是想作一定的修改,有自己的方法逻辑,只不过是想用父类的这个方法的名字,这就需要采用方法的重写;

四.重写的规则:

1. 必须是在继承里;
2. 方法名、参数个数和参数类型 都必须相同;
3. 返回类型与被重写方法的返回类型可以不相同,但是必须是父类返回值的派生类;
4. 访问权限不能比父类中被重写的方法的访问权限更低。例如:如果父类的一个方法被声明为 public,那么在子类中重写该方法就不能声明为 protected;






 class Vecetables { 
    public void Fot(string a,int b) { 
    Console.WriteLine("我叫{0}是父类的第{1}个方法",a,b); } } class XC:Vecetables { 
    protected new void Fot(string a, int b) { 
    Console.WriteLine("我叫{0}是子类的第{1}个方法", a, b); } } 
class Vecetables { 
    static void Fot(string a,int b) { 
    Console.WriteLine("我叫{0}是父类的第{1}个方法",a,b); } } class XC:Vecetables { 
    static void Fot(string a) { 
    Console.WriteLine("我叫{0}是子类的方法", a); } } 

五.重写的前提以及好处:

既然知道了重写,那么在什么情况下进行重写又或者是重写的前提是什么呢?一起来探索下吧!
重写的前提:在进行重写时,父类中的这个方法必须是虚拟或者抽象;
重写的好处重写的好处在于子类可以根据需要,定义特定于自己独特的行为。,也就是说子类能够根据需要实现父类的方法,只是引用了父类方法的名字,但是有自己的行为,自己去实现一些方法。




版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/202959.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月19日 下午10:55
下一篇 2026年3月19日 下午10:55


相关推荐

  • windows下修改mysql时区设置

    windows下修改mysql时区设置root 身份登录 MySQLmysql uroot p 查看 time zone 变量 showvariable time zone 显示 time zone 变量 设置 time zone 变量 settime zone 08 00 下次重启数据库还要重新设置永久设置 MySQL 时区修改的 my ini 配置文件 在 MySQL 的安装根目录下 mysqld 设置 3306 端口 port 3306 设置 mysql 的安装目录 basedir C Prog

    2026年3月17日
    2
  • 元宝App翻译功能

    元宝App翻译功能

    2026年3月12日
    2
  • [Java]interrupt()用法

    [Java]interrupt()用法一 源码阅读 1interrupt Thread interrupt 的作用其实也不是中断线程 而是通知线程应该中断了 具体来说 当对一个线程调用 interrupt 时 如果线程处于被阻塞状态 例如处于 sleep wait join 等状态 那么线程将立即退出被阻塞状态 并抛出一个 InterruptedE 异常 仅此而已 如果线程处于正常活动状态 那么

    2026年3月16日
    2
  • arm按键控制led灯闪烁(嵌入式按键实验报告)

    实验六键盘控制LED灯实验1实验目的(1)通过实验掌握中断式键盘控制与设计方法;(2)熟练编写S3C2410中断服务程序。2实验设备(1)S3C2410嵌入式开发板,JTAG仿真器。(2)软件:PC机操作系统WindowsXP,ADS1.2集成开发环境,仿真器驱动程序,超级终端通讯程序。3实验内容编写中断处理程序,处理一个键盘中断,并在串口打印中断及按键显示信息。4实验步骤(1)参照模板工程,新…

    2022年4月16日
    128
  • 【小结】idea全局搜索快捷键

    【小结】idea全局搜索快捷键1 shift shift 双击可以搜索任何东西 类 资源 配置项 方法等 还能搜索路径 几乎这一个快捷键 全局搜索就足够了 2 Ctrl F 在当前类中 页中进行查找相关方法等 3 Ctrl Shift N 按 文件名 搜索文件过滤的结果都是文件 4 Ctrl H 查看类的继承关系选中某个类 然后 Ctrl H 以展开的形式展现出来 5 Alt F7 查看类在哪儿被使用 OK 了

    2026年3月26日
    37
  • 谁在忙着“养龙虾”?OpenClaw爆火后,关注三大投资风险

    谁在忙着“养龙虾”?OpenClaw爆火后,关注三大投资风险

    2026年3月14日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号