c#入门-接口的抽象成员和虚成员

news2024/11/25 20:40:06

接口的抽象成员

接口的成员如果不指定主体,那么就是抽象成员。
你可以主动为他们加抽象修饰符,不过没什么用。

interface I属性
{
	public abstract int Hp { get; set; }
	public abstract int Mp { get; set; }
}

接口的虚成员

接口的成员可以指定主体。
有主体的成员就是虚成员。你可以主动为他们加虚拟修饰符,不过没什么用。

interface I回血 : I属性
{
	public void 回血()
	{
		Hp = 100;
	}
}

虚成员视为实现此接口的成员以这种方式显式实现了这个成员
所以你也没有办法从实现类中直接调用接口的虚成员。
在这里插入图片描述

class 探险王 : I回血
{
	public int Hp { get; set; }
	public int Mp { get; set; }

	public void 睡觉()
	{
		((I回血)this).回血();
	}
}

不是public权限的接口成员

接口成员默认访问权限是public。不是public权限的成员是有意义的。
可以限制他们只能在派生接口中通过静态成员,或虚成员实现。

这也就解释了为什么隐式实现接口一定要是public才能实现了。
因为你必须保证在我这里能调用你的方法。

另外,不能被派生接口访问的private,必须是有主体。此时抽象和虚拟修饰符都不能使用

interface I回魔
{
	private void 回魔() { }
}

接口的静态抽象成员

接口最奇怪的概念是静态抽象成员。
静态意味着不能被继承,实现。而抽象意味着必须实现。

声明

接口可以声明静态抽象成员

interface I生产
{
	public static abstract void 产物();
}

实现

实现类必须以静态成员实现接口的抽象静态成员。
显式隐式实现均可。

class 兵营 : I生产
{
	public static void 产物()
	{
        Console.WriteLine("出现一只小兵");
    }
}

调用

普通的方法是无法使用静态抽象成员的。
因为接口必须通过类型转换才能生效。
而静态成员无法参与类型转换。

静态抽象成员必须也只能配合后续内容的《泛型》使用。

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

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

相关文章

Jina 开箱即用的云原生多模态系统解决方案

Jina 是一个基于云原生的多模态应用框架,开发者使用 Jina 可以轻松构建、部署和维护高性能的云原生应用。你可能认为这些都只是空泛的营销口号,甚至产生疑问,到底什么是云原生?对构建多模态应用有什么帮助?它是否只是 …

Linux CentoOs7中用命令打开并修改文本文件

概述:VI/VIM VI 是 Unix 操作系统和类 Unix 操作系统中最通用的**文本编辑器**。 VIM 编辑器是从 VI 发展出来的一个性能更强大的**文本编辑器**。可以主动的以字体颜色辨别语法的正确性,方便程序设计。VIM 与 VI 编辑器完全兼容。 我们常常用vim命令…

C#语言实例源码系列-实现热键屏幕和设置热键

专栏分享点击跳转>Unity3D特效百例点击跳转>案例项目实战源码点击跳转>游戏脚本-辅助自动化点击跳转>Android控件全解手册 👉关于作者 众所周知,人生是一个漫长的流程,不断克服困难,不断反思前进的过程。在这个过程中…

C++ 初阶 文件操作和io流

作者:小萌新 专栏:C初阶 作者简介:大二学生 希望能和大家一起进步! 本篇博客简介:简单介绍C中的文件操作和io流 文件操作和io流C语言中的输入和输出流是什么?Cio流C标准io流C中流的特性C文件io流以二进制形…

Jenkins全局安全配置

文章目录一、进入全局安全设置页面二、各选项功能Disable remember me(禁用记住我)Security Realm(安全域)Delegate to servlet container(servlet 容器代理)Jenkins’ own user database(Jenkins 专有用户数据库&…

Pr:导出页面之预览与摘要窗口

使用“预览”窗口,可在导出前预览媒体,设置自定义的持续时间,如果导出为不同的帧大小,还可以控制源视频适应输出帧的方式。使用“摘要”窗口,可以快速查看源及输出的音视频信息。◆ ◆ ◆预览窗口范围Range可自定义导…

居家办公如何避免数据泄露?

随着疫情管控政策的调整,越来越多的“小阳人”出现,企业不得不面对员工在家远程办公。 面对突如其来的远程办公,很多企业都没有做好准备,甚至采取微信、QQ、互联网邮箱、远程会议等方式传递秘密信息。但是,这样的居家…

ChatGpt详细注册流程

ChatGpt详细注册流程ChatGpt的网址:直接点击我 点击链接后向下滑动看到TRY CHATGPT如下图所示: 点击TRY CHATGPT后会跳转如下图界面: 点击Log in(登录)如下图: 因为首次登录你肯定是没有账号的所以需要先点击红框框出的Sign up…

QQ注册界面仿写(HTML+CSS+JS)

✅作者简介:热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏:前端案例分…

整合当地商圈资源,异业联盟打出促消费花式组合拳

如今的市场竞争白热化,大商家逐渐形成垄断的格局。许多行业的第一品牌跟第二品牌主宰着市场,为了打破这种局面,小商家联合起来对抗大商家,所以异业联盟因此诞生。那么建立异业联盟对大家有什么好处呢? 异业联盟针对于商…

RK3568平台开发系列讲解(工具命令篇)Android Debug Bridge常用命令

🚀返回专栏总目录 文章目录 一、工作常用的adb命令二、ADB的原理沉淀、分享、成长,让自己和他人都能有所收获!😄 📢ADB-Android Debug Bridge,它是 Android 开发/测试人员不可替代的强大工具,也是 Android 设备玩家的好玩具。安卓调试桥 (Android Debug Bridge, adb)…

uniapp 之 扫普通二维码进入小程序

前言 因项目的需求,需要我完成 在微信的扫一扫中,扫后端定义的二维码进入小程序中 这个需求说简单也很简单,说难也不难,就是花费了我几天的时间 需要在 开发 ---> 开发管理 下的开发设置 中的 一直往下滑 直到出现 扫普通…

11、Redis_事务_秒杀案例

文章目录11、Redis_事务_秒杀案例11.1 解决计数器和人员记录的事务操作11.2 Redis事务--秒杀并发模拟11.2.1 联网11.2.2 无网络11.2.3 测试及结果11.2.3.1 通过ab测试11.2.3.2 超卖11.3 超卖问题11.4 利用乐观锁淘汰用户,解决超卖问题。11.5 继续增加并发测试11.5.1…

发布一个简单的npm包简单流程(图文并茂,你必懂)

目录 前言: 1.发布前的代码基本配置 A.创建文件夹 B.npm init/npm init -y初始化项目 C.配置package.json文件 D.创建index.js文件 E.创建README.md文件 F.最基本的目录结构 2.账号注册 3.登录npm账号 A.使用cmd进行登录 B.使用nrm工具 C.成功登录 4.发…

1、浮动(float)

提示:我们一般网页上下用标准流,左右用浮动来写 1.1传统网页布局三种方式 网页布局本质——用css来摆放盒子,把盒子摆放到相应位置。css提供了三种传统布局简单方式,说就是盒子如何进行排列顺序: 普通流(或…

面试蚂蚁(P7)竟被MySQL难倒,奋发图强后二次面试入职蚂蚁金服

爱因斯坦说过“耐心和恒心总会得到报酬的”,我也一直把这句话当做自己的座右铭,这句箴言在今年也彻底在“我”身上实现了。 每一个程序员都拥有一座大厂梦,我也不例外,去年面试蚂蚁金服,竟然被MySQL问倒了&#xff0c…

【Flask框架】——16 Jinja2模板

文章目录Jinja2模板一、Jinja2模板介绍1.模板传参2.语法二、表达式三、控制语句1.条件判断语句2.for循环语句:四、过滤器1.什么是过滤器2.字符串的过滤器3.数值过滤器4.列表相关过滤器5.字典相关过滤器6.自定义过滤器五、测试器1.Jinja2中内置的测试器2.自定义测试器…

配置NTP时间同步之Linux

一:NTP是网络时间同步协议,就是用来同步网络中各个计算机的时间的协议。 二:NTP服务端配置 1.检查系统是否安装了NTP包(Linux一般自带NTP4.2),没有安装我们直接使用yum命令在线安装: yum inst…

Spring Boot整合Swagger3.0及Knife4j

一、什么是 Swagger Swagger是一组围绕 OpenAPI 规范构建的开源工具,可帮助您设计、构建、记录和使用 REST API。主要的 Swagger 工具包括: Swagger Editor – 基于浏览器的编辑器,您可以在其中编写 OpenAPI 规范。 Swagger UI – 将 OpenA…

非零基础自学Golang 第7章 函数 7.8 知识拓展

非零基础自学Golang 文章目录非零基础自学Golang第7章 函数7.8 知识拓展7.8.1 函数参数传递的本质7.8.2 Go内置函数第7章 函数 7.8 知识拓展 7.8.1 函数参数传递的本质 在讲述参数传递前,我们首先要了解两个基本概念:值传递和引用传递。 值传递&…