c#入门-访问基类成员

news2024/11/25 6:34:17

调用基类构造器

在构建派生类前,会首先构建出完整的基类。
即便是派生类无权访问的成员,也会存在。
因此才能保证派生类能完全地当作基类来使用。

因此,在执行派生类的构造器前,首先需要先调用基类的构造器。
而如果基类没有,或是无权访问他的无参构造器
那么你就需要显式地声明派生类构造器,并指明如何调用基类构造器。

class 英雄
{
	protected int hp;
	protected int atk;
	public static int maxLevel = 18;
	public 英雄(int hp, int atk)
	{
		this.hp = hp;
		this.atk = atk;
	}
}

在这里插入图片描述
显式调用基类构造器地语法是,把调用自己构造器的语法中的this改成base。
关键字base即指代直接基类。

class 盖伦 : 英雄
{
	public 盖伦(int hp, int atk) : base(hp, atk)
	{
	}
}

访问基类的其他成员

访问基类成员需要有他的访问权限。
对于非嵌套类,需要只能访问基类protected及以上的成员。无论实例成员还是静态成员。

静态成员

静态成员不会继承下来。虽然派生类可以不带类型名直接访问基类的静态成员,
派生类自己不会另外保存一份数据
所有通过派生类访问的基类静态成员,都是确实地访问到基类的静态成员。

Console.WriteLine(英雄.maxLevel);//18
盖伦.maxLevel = 20;
Console.WriteLine(英雄.maxLevel);//20

兄弟类型的基类成员

派生类只能从自己或从自己派生类型,的实例上访问继承自基类的成员。

class 艾希 : 英雄
{
	public 艾希(int hp, int atk) : base(hp, atk)
	{
	}
}

艾希类和盖伦类都继承自英雄类。但他们不在同一条继承链上。
类型继承一旦分家,就会翻脸不认人。
虽然盖伦能访问自己身上继承来的基类成员,但不能访问兄弟类上继承来的基类成员。

并且由于多态的特性,兄弟类是可以给基类型的变量赋值的。
由于基类变量的值可能是兄弟类型,所以你不能从基类类型中访问基类成员

class 盖伦 : 英雄
{
	public 盖伦(int hp, int atk) : base(hp, atk)
	{
	}
	public void 致死打击()
	{
		英雄 a = this;
		a.hp -= 20;//即便是把自己转为基类型,也无权访问
	}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/84278.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

017 | 精准扶贫视野下非遗传承的研究与启示——以三峡皮影为例 | 大学生创新训练项目申请书 | 极致技术工厂

(一)研究目的 百年党建视域下,全面建成小康社会的历史目标已成功达成,但东西部经济发展的不平衡、不平均依旧是新时代发展中亟需解决的问题。坚持党的领导,响应西部大开发的战略号召,本团队深入探访于2018…

S2SH药膳馆会员管理系统计算机专业毕业论文java毕业设计开题报告

💖💖更多项目资源,最下方联系我们✨✨✨✨✨✨ 目录 Java项目介绍 资料获取 Java项目介绍 计算机毕业设计java毕设之S2SH药膳馆会员管理系统-IT实战营_哔哩哔哩_bilibili项目资料网址: http://itzygogogo.com软件下载地址:http://itzygog…

基于jsp+mysql+ssm足球新闻发布网站-计算机毕业设计

项目介绍 同完成整个足球新闻发布系统的设计开发。系统实现的功能主要包括:前台浏览足球新闻的功能;后台用户在成功登录该系统的后台时,可以对用户、足球新闻类别、足球新闻、留言进行添加、修改和删除等功能;以及对用户名密码等…

Arthas(Java 应用诊断利器)

文章目录Arthas使用背景Arthas(阿尔萨斯)能做什么?Arthas Spring Boot StarterArthas Arthas 是由Alibaba开源的Java监控诊断工具,通过全局视角实时查看应用 load、内存、gc、线程的状态信息,并能在不修改应用代码的情…

Pytorch中的损失函数

L1损失函数:又称,L1 范数损失、最小绝对值偏差(LAD)、最小绝对值误差(LAE) MAE也是指L1损失函数。 把目标值 yi 与模型输出(估计值) f(xi) 做绝对值得到的误差。 通常用于回归任务、…

uniapp实战仿写网易云音乐(二)—promise接口请求的封装和主页功能的实现,组件封装

文章目录前言promise请求接口的封装主入口功能的实现:推荐歌单模块新碟新歌模块精选视频模块最后前言 本篇文章继续完成上篇文章的部分,主要实现prromise接口的封装和首页主入口的实现 promise请求接口的封装 在上篇文章中请求我们是这样写的&#xf…

(详细及解决方法)关于Vue.prototype中定义的变量不是响应式

目录 一、背景 二、原因 三、解决方法 四、扩展 当时第一眼看到下面的图,就想这个不会是写错了吧,咋还能这样写,在这里我承认,我以前说话确实很大声了 一、背景 在项目中需要将全局变量存放到Vue的实例对象上面 Vue.protot…

【历史上的今天】12 月 13 日:时代杂志将“你”评为年度人物;苹果发布 AirPods;互联网传出欧洲

整理 | 王启隆 透过「历史上的今天」,从过去看未来,从现在亦可以改变未来。 今天是 2022 年 12 月 13 日,国家公祭日。从 2014 年开始,12 月 13 日被定为缅怀先烈的国家公祭日,网站也会在这一天变为全灰色&#xff0c…

墙裂推荐c++的学习网站(OJ)

目录 墙裂推荐OJ 墙裂推荐学习软件 墙裂推荐线上编辑器 墙裂推荐OJ 要想学好c,更好的OJ少不了啊!!! 为了让诸多小白们有更好的学习测试环境,特此准备了一下几个OJ, 1.Openjudge 网站: OpenJudge openjudge网站中储存着大量的题目,而且还提前帮你们把板块分好了,就问你们…

[Java] HashMap是如何实现的?扩容机制是什么?树化机制知道吗?结合源码带你理解HashMap的原理。

文章目录前言HashMap是什么?Map接口散列表(HashTable)HashMap的扩容机制扩容机制?扩谁的容?HashMap的容量(Capacity)属性HashMap的扩容因子(load factor)属性HashMap的树…

【js逆向基础】crypto 之 hash和hmac

▒ 目录 ▒🛫 导读需求开发环境1️⃣ hash对象创建Hash常见方法例封装成 stream 实例封装成管道流(piped stream)2️⃣ hmac对象创建Hmac常见方法例封装成 stream 实例封装成管道流(piped stream)🛬 文章小结📖 参考资…

mysql学习---流程控制函数(条件判断)case when ,if使用

文章目录流程控制函数流程控制函数的介绍流程函数的使用流程控制函数 流程控制函数的介绍 if(value,value1,value2) 解释:如果value的结果为true ,返回value1,否则返回value2 例如: select if(1>0,正确,错误) ->正确ifnull(value1,val…

Babel快速入门

一、简介 Babel是一个广泛使用的转码器,可以将ES6代码转为ES5代码,从而在现有环境执行执行。 这意味着,你可以现在就用 ES6 编写程序,而不用担心现有环境是否支持。 二、安装 安装命令行转码工具 Babel提供babel-cli工具&#xff…

Mysql调优(三)——通过索引进行优化、 查询优化

接上:Mysql调优(二)——schema与数据类型优化、执行计划 本篇文章在一定程度上与下面两篇文章重合,笔者建议优先读下面两篇文章,本文偏向概念,而它们偏向原理: Mysql索引的本质深入浅出&#x…

全栈Jmeter接口测试(五):json提取器元件及jsonpath介绍,响应断言元件

Jmeter(10):json提取器元件及jsonpath介绍 json提取器元件介绍: json提取器与正则表达式提取器功能类似,也是用来截取响应信息的部分保 存到指定的变量中去,不同的是,它只能用来处理响应正文,并且响应正文…

ITE Super IO 学习 – 串口

串口都算是一个比较古老的功能了,也就是比较成熟了。Super IO中的大部分是硬件已经做好的,BIOS这边只需做小小的改动甚至默认便可以工作了。 串口寄存器 串口有关的寄存器总的来说有4个,两个用来设置IO资源的地址,一个是中断号选择,还有一个特殊配置寄存器。 Seri…

高级路由期末命令配置

文章目录前提要求(1)拓扑图搭建及IP地址规划拓扑图配置:IP地址表规划表1网络连接规划表表2 网络设备明细表表3 IP规划表(2)OSPF(3)BGP(4)路由引入(5)路由选择&#xff08…

PicoDet代码学习记录

推理步骤 [picodet_s_320_coco.yml] Infer.py main()->run()Trainer.py __init__() self.model create(cfg.architecture) Picodet.py from_config()->__init__() head create(cfg[head], **kwargs)时候调用: Layers.py MultiClassNMS __…

Django(一)

一、Django介绍 1、python语言编写的开源web框架 2、重量级python web框架,配备了常用的大部分组件 3、组件: ※基本配置文件/路由系统 ※模型层(M)/模板层(T)/视图层(V) ※co…

Cadence创建插件焊盘(超详细)

背景:Cadence画封装,在我看来,操作是比较不方便的事儿,所以在此在记录一遍。要画一个插件封装,需要调用画好的焊盘(AD里直接设置即可),另外放置好pin的位置和绘制好边框。包括遇到的…