C# 面向对象编程(三)——接口/枚举类型/泛型

devtools/2024/9/23 10:21:30/

总目录
C# 语法总目录

C# 面向对象编程 三—接口/枚举类型/泛型

      • 接口
        • 1. 显示接口实现
        • 2. 虚方法实现接口函数
      • 枚举类型
      • 泛型类型
        • 1.协变/逆变

接口

接口和类区别在于,接口不用为成员函数提供实现,接口的成员都是隐式抽象的,而且接口不能有字段,可以有属性。

接口的方法默认是public

类可以实现多个接口,而只能继承自一个类,结构体完全不支持继承,支持实现接口。

结构体可以继承接口,实现它的属性和方法。

internal interface Iperson
{void Test();int Name { get; set; }
}public struct Point : Iperson
{public int Name { get => throw new NotImplementedException(); set => throw new NotImplementedException(); }public void Test(){throw new NotImplementedException();}
}
1. 显示接口实现

显示接口就是继承多个接口的时候,如果这两个接口有同名的方法,那么实现这两个方法的时候要显示的实现,就是在实现的方法前加上不同接口名字的前缀

2. 虚方法实现接口函数

可以在实现的接口函数前面加上virtual,让它变成一个虚函数,可以让它的子类重写它。

枚举类型

成员默认对应的值是int的,可以实现byte或其他类型去改变默认类型

枚举类型一般可以合并,所以让值为2的倍数可以避免混淆

如果给枚举类型添加上标签,那么这个类型可以合并,当然不添加也能合并,但是添加后输出时是分开的类型名,不添加时输出是合并后的一个数字

[Flags]
public enum AnimalType : byte
{None = 0,Bird = 1,Dog = 2,Cat = 4,Pig = 8,BirdDog = Bird | Dog,BirdCat = Bird | Cat
}static void Main(string[] args)
{AnimalType type = AnimalType.Bird;//合并type |= AnimalType.Dog;Console.WriteLine(type);}
//输出,因为有 Flags 标签,没有的话会输出 3 
Bird, Dog

泛型类型

指定类中的某些成员是某类类型

public class Dog<T>
{string? name;T? age;public Dog(T a){name = "abc";age = a;}}
1.协变/逆变

略。

总目录
C# 语法总目录


http://www.ppmy.cn/devtools/4799.html

相关文章

设计模式-外观模式

外观设计模式 定义 何为外观,就是对外提供一个统一的入口,一是可以隐藏系统内部的细节,二是可以降低使用者的复杂度,比如SpringMvc中的DispaterServlet,所有的Controller都是通过DispaterServlet统一暴露。 使用场景 降低使用者的复杂度,简化客户端的接入成本。 实践…

【JAVA基础篇教学】第十三篇:Java中I/O和文件操作

博主打算从0-1讲解下java基础教学&#xff0c;今天教学第十三篇&#xff1a;Java中I/O和文件操作。 理解 Java 中的 I/O&#xff08;输入/输出&#xff09;和文件操作对于开发各种类型的应用程序都至关重要。I/O 操作涉及从文件、网络或其他数据源中读取数据&#xff0c;以及…

如何查看微信公众号发布文章的主图,如何看微信文章的主图,怎么才能拿到主图

如何查看&#xff0c;微信公众号发布文章的主图&#xff0c;如何看微信文章的主图 起因是这样的&#xff0c;当我看到一篇文章的时候&#xff0c;他的主图很漂亮&#xff0c;但是&#xff0c;正文里没有&#xff0c;而我又想看到&#xff0c;并且使用这张图片&#xff0c;该怎么…

比例微积分算法

比例微积分&#xff08;Proportional-Integral-Derivative&#xff0c;简称PID&#xff09;算法是一种常用的控制算法&#xff0c;它用于计算控制器的输出&#xff0c;以使得系统的输出能够尽可能地跟踪期望的目标值。PID控制器基于系统的误差&#xff08;目标值与当前值的差&a…

.cur 鼠标光标编辑器

详解透明贴图和三元光栅操作 - CodeBus 鼠标指针文件格式解析——Windows&#xff08;二&#xff09; (qq.com) [C/C] RGBA数组生成Windows下的ico文件_c ico格式-CSDN博客 色环设计 - CodeBus 左键绘制 右键选颜色 ctrl右键设置鼠标热点 F1导出.cur文件 //代码来源&…

【热门话题】探索与心得:深入体验Microsoft Edge浏览器

&#x1f308;个人主页: 鑫宝Code &#x1f525;热门专栏: 闲话杂谈&#xff5c; 炫酷HTML | JavaScript基础 ​&#x1f4ab;个人格言: "如无必要&#xff0c;勿增实体" 文章目录 探索与心得&#xff1a;深入体验Microsoft Edge浏览器一、Edge浏览器概述1.1 发…

恒峰智慧科技—森林防火杆:科技与环保的完美结合

在当今世界&#xff0c;我们不仅要关注人类生活的方方面面&#xff0c;也需要更加重视环境保护。尤其是在森林火灾的防范上&#xff0c;科技的应用显得尤为重要。这就是我们今天要介绍的主角——森林防火杆。 首先&#xff0c;让我们来了解一下森林防火杆的基本配置。这是一种基…

Webpack打包

Webpack是 JS 静态打包神器&#xff0c;通过内部组件进行一系列操作&#xff0c;对前端代码进行替换、转义、JS浏览器兼容性等处理&#xff0c;最终生成前端应用所需文件包括 Html、JS和 CSS。Webpack主要以下几部分组成&#xff0c;这些配置都可以定义在webpack.config.js&…