当前位置: 首页 > article >正文

C#语法篇 :基类子类转换,成员变化情况

在C#中,会有从子类对象到基类对象的转换,这属于C#中的向上扩容,一般可以默认转换。

方法的转换

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace ex3._4
{class Father{public void F(){Console.WriteLine("A.F");}public virtual void G(){Console.WriteLine("A.G");}}class Son : Father{new public void F() { Console.WriteLine("B.F"); }public override void G(){Console.WriteLine("B.G");}}internal class Program{static void Main(string[] args){Son b = new Son();Father a = b; a.F(); b.F();a.G();b.G();}}}

对于上面这段程序,输出结果是这样的
在这里插入图片描述

其中b子类对象的输出当然都是正常的,而a父类的两个方法出现了歧义:a.F输出了a.F,a.G输出了b.G,这是因为对于new关键词来说,他没有彻底覆盖父类的方法,而只是定义了一种新的同名方法;对于virtual-override来说,新的子类方法覆盖了父类方法,使得即使对象转换回父类,也不再是父类的方法,而是子类先前覆盖后的方法。

字段的转换

对于子类转父类的字段变化,父类对象会把公共字段直接复制到新对象中

http://www.lryc.cn/news/2383261.html

相关文章:

  • 【漫话机器学习系列】264.内距(又称四分位差)Interquartile Range
  • 海外盲盒系统开发:重构全球消费体验的科技引擎
  • 高噪声下扩展边缘检测算子对检测边缘的影响
  • vuejs处理后端返回数字类型精度丢失问题
  • mysql数据库-中间件MyCat
  • 手搓四人麻将程序
  • PotPlayer 安装 madVR、LAV Filters 以提升解码能力和视频音频效果
  • 阿里云域名 绑定 华为云服务器ip
  • windows7安装node18
  • Maven配置安装
  • 小刚说C语言刷题—1153 - 查找“支撑数”
  • Kind方式部署k8s单节点集群并创建nginx服务对外访问
  • K个一组链表翻转
  • Python60日基础学习打卡D32
  • 面向恶劣条件的道路交通目标检测----大创自用(当然你也可以在里面学到很多东西)
  • 基于Java(SSM)+MySQL实现(Web)具有智能推荐功能的图书销售系统
  • 浙大团队研发Earth Explorer系统,探索深时演化/地学剖面/科研场景,赋能深时地球科学研究
  • docker 启动一个python环境的项目
  • 31-35【动手学深度学习】深度学习硬件
  • Linux问题排查-内存使用率高如何分析原因
  • SpringMVC2
  • 【每日一题丨2025年5.12~5.18】排序相关题
  • ElasticSearch性能优化
  • Typora + PicGo + GitHub 配置图床——图片自动上传 详细教程
  • QT+Visual Studio 配置开发环境教程
  • 缺乏经验的 PCB 过孔建模方法
  • layui 介绍
  • 【漫话机器学习系列】265.普拉托变换的相关问题(Issues With Platt Scaling)
  • 【Linux高级全栈开发】2.2.1 Linux服务器百万并发实现2.2.2 Posix API与网络协议栈
  • LlamaIndex