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

八、C#笔记

/// <summary>
/// 第十三章:创建接口和定义抽象类  
/// </summary>
namespace Chapter13
{
    class Program
    {
        static void Main(string[] args)
        {
            //13.1理解接口
            ///13.1.1定义接口
            ///13.1.2实现接口
            /*
             * 实现接口时必须保证每个方法都完全匹配对应的接口方法,具体遵循以下几个规则:
             * 1.方法名和返回类型完全匹配
             * 2.所有参数(包括ref和out关键字修饰符)都完全匹配
             * 3.用于实现接口的所有方法都必须具有public可访问性。但如果使用显示接口实现(即实现时附加接口名前缀),
             * 则不应该为方法添加访问修饰符。
             */
            ///13.1.3通过接口引用类
            Hourse hourse = new Hourse();
            if (hourse is ICloneable)
            {
                //ICloneable cloneable = hourse;
            }
            ///13.1.4使用多个接口
            //class Hores:Mammal,ILandBound,IGrazable
            ///13.1.5显示实现接口(类里面实现的接口,用接口.方法名)
            ///13.1.6用接口进行版本控制
            /*
             * 创建一个接口去继承另一个接口(但是难以维护)
             * 如果在写好接口、接口具体方法后,还想加入新的接口。
             * 就写接口的方法抛出异常
             */
            ///13.1.7接口的限制
            /*
             * 不能在接口中定义任何字段,包括静态字段.
             * 不能在接口中定义任何构造器
             * 不能在接口中定义任何终结器
             * 不能为任何方法指定访问修饰符\接口所有方法都隐式为公共方法
             * 不能在接口中嵌套任何类型(例如枚举\结构\类或其他接口)
             * 虽然一个接口能从另一个接口继承,但不允许从结构\记录或类继承.
             */
             ///13.1.8定义和使用接口
             ///略,不演示
             
            //13.2抽象类
            /*
             * 为明确声明不允许创建某个类的实例,必须将那个类显式声明为抽象类
             * 抽象类可包含抽象方法.
             * 抽象方法原则上与虚方法相似,只是不含方法主体
             * 派生类必须 重写这种方法.
             */

            //13.3密封类
            /*
             * 如果不想一个类作为基类使用,可用C#提供的sealed密封关键字防止类被用作基类使用
             */
             ///13.3.1密封方法
             /*
              * 理解关键字:
              * interface(接口)引入方法的名称
              * virtual(虚)方法是方法的第一个实现
              * override(重写)方法是方法的另一个实现
              * sealed(密封)是方法的最后一个实现
              */
              ///13.3.2实现并使用抽象类
              
        }
    }
}


namespace Chapter13
{
    class Hourse : IComparable
    {
        public int CompareTo(object obj)
        {
            return 4;
        }
    }
}
 

namespace Chapter13.Interface
{
    internal class SolidColorBrush
    {
        private Color color;

        public SolidColorBrush(Color color)
        {
            this.color = color;
        }
    }
}

namespace Chapter13.Interface
{
    internal class Shape
    {
        public SolidColorBrush Fill { get; internal set; }
    }
}

namespace Chapter13.Interface
{
    public interface IComparable
    {
        int CompareTo(object obj);
        /// <summary>
        /// 13.1.6用接口进行版本控制(c#8.0开始)
        /// </summary>
        /// <returns></returns>
        // void DoAdditionalWork()
        //{
        //    throw new NotImplementedException();
        //}
    }
}
 


namespace Chapter13.Interface
{
    /// <summary>
    /// 13.3.2实现并使用抽象类
    /// </summary>
    abstract class DrawingShape
    {
        protected int size;
        protected int locX=0,locY=0;
        protected Shape shape=null;
        public DrawingShape(int size)
        {
            this.size = size;
        }
        public void  SetLocation(int xCoord, int yCoord)
        {
            this.locX = xCoord;
            this.locY = yCoord;
        }
        public void SetColor(Color color)
        {
            if(this.shape is null){

            }
            else
            {
                SolidColorBrush brush = new SolidColorBrush(color);
                this.shape.Fill = brush;
            }
        }
    }
}
 

namespace Chapter13.Interface
{
    public class Color
    {
    }
}

相关文章:

八、C#笔记

/// <summary> /// 第十三章&#xff1a;创建接口和定义抽象类 /// </summary> namespace Chapter13 { class Program { static void Main(string[] args) { //13.1理解接口 ///13.1.1定义接口 ///…...

利用Node.js和cpolar实现远程访问,无需公网IP和路由器设置的完美解决方案

文章目录 前言1.安装Node.js环境2.创建node.js服务3. 访问node.js 服务4.内网穿透4.1 安装配置cpolar内网穿透4.2 创建隧道映射本地端口 5.固定公网地址 前言 Node.js 是能够在服务器端运行 JavaScript 的开放源代码、跨平台运行环境。Node.js 由 OpenJS Foundation&#xff0…...

C++如何通过调用ffmpeg接口对H264文件进行编码和解码

C可以通过调用FFmpeg的API来对H264文件进行编码和解码。下面是一个简单的例子。 首先需要在代码中包含FFmpeg的头文件&#xff1a; extern "C" { #include <libavcodec/avcodec.h> #include <libavformat/avformat.h> #include <libswscale/swscale…...

使用MetaMask + Ganache搭建本地私有网络并实现合约部署与互动

我使用Remix编写合约&#xff0c;MetaMask钱包工具和Ganache搭建了一个私有网络&#xff0c;并且实现了合约的部署和互动。 在前面的博客中提到了 Remix在线环境及钱包申请 以及 Solidity的基本语法 &#xff0c;没看过的小伙伴可以点击链接查看一下&#xff0c;都是在本专栏下…...

目标检测、目标跟踪、重识别

文章目录 环境前言项目复现特征提取工程下载参考资料 环境 ubuntu 18.04 64位yolov5deepsortfastreid 前言 基于YOLOv5和DeepSort的目标跟踪 介绍过针对行人的检测与跟踪。本文介绍另一个项目&#xff0c;结合 FastReid 来实现行人的检测、跟踪和重识别。作者给出的2个主…...

高防IP防御效果怎么样,和VPN有区别吗

高防IP主要是用于防御网络攻击&#xff0c;可以抵御各种类型的DDoS攻击&#xff0c;隐藏源IP地址&#xff0c;提高网络安全性和用户体验。主要目的是解决外部网络攻击问题&#xff0c;保护网络安全&#xff0c;避免因攻击而导致的业务中断和数据泄露等问题。 而VPN则是一种可以…...

探秘MSSQL存储过程:功能、用法及实战案例

在现代软件开发中&#xff0c;高效地操作数据库是至关重要的。而MSSQL&#xff08;Microsoft SQL Server&#xff09;作为一款强大的关系型数据库管理系统&#xff0c;为我们提供了丰富的功能和工具来处理数据。其中&#xff0c;MSSQL存储过程是一项强大而又常用的功能&#xf…...

我们常说的流应用到底是什么?

流应用是DCloud公司开发的一种可以让手机App安装包实现边用边下的技术。基于HTML5规范的即点即用应用&#xff0c;开发者按照HTML5规范开发的应用&#xff0c;可以在支持HTML5流应用的发行渠道实现即点即用的效果。 流应用是基于 HTML5规范的即点即用应用&#xff0c;开发者按照…...

ELK 日志解决方案

ELK 是目前最流行的集中式日志解决方案&#xff0c;提供了对日志收集、存储、展示等一站式的解决方案。 ELK 分别指 Elasticsearch、Logstash、Kibana。 Elasticsearch&#xff1a;分布式数据搜索引擎&#xff0c;基于 Apache Lucene 实现&#xff0c;可集群&#xff0c;提供…...

本项目基于Spring boot的AMQP模块,整合流行的开源消息队列中间件rabbitMQ,实现一个向rabbitMQ

在业务逻辑的异步处理&#xff0c;系统解耦&#xff0c;分布式通信以及控制高并发的场景下&#xff0c;消息队列有着广泛的应用。本项目基于Spring的AMQP模块&#xff0c;整合流行的开源消息队列中间件rabbitMQ,实现一个向rabbitMQ添加和读取消息的功能。并比较了两种模式&…...

freeswitch webrtc video_demo客户端进行MCU的视频会议

系统环境 一、编译服务器和加载模块 二、下载编译指定版本video_demo 三、配置verto.conf.xml 1.修改配置文件 2.重新启动 四、MCU通话测试 1.如何使用video_demo 2.测试结果 五、MCU的通话原理及音频/视频/布局/管理员等参数配置 附录 freeswitch微信交流群 系统环境 lsb_rel…...

【鸿蒙学习网络】

鸿蒙技术学习相关学习资料 官方文档&#xff1a;华为官方提供了鸿蒙开发者文档&#xff0c;包括开发指南、API参考和示例代码等。您可以访问华为开发者中心网站&#xff08;https://developer.harmonyos.com/&#xff09;获取最新的官方文档和教程。在 线 课 程 &#xff1a; …...

MySQL系列(一):索引篇

为什么是B树&#xff1f; 我们推导下&#xff0c;首先看下用哈希表做索引&#xff0c;是否可以满足需求。如果我们用哈希建了索引&#xff0c;那么对于如下这种SQL&#xff0c;通过哈希&#xff0c;可以快速检索出数据&#xff1a; select * from t_user_info where id1;但是这…...

Flink Flink数据写入Kafka

一、环境准备 官网地址 flink官方集成了通用的 Kafka 连接器&#xff0c;使用时需要根据生产环境的版本引入相应的依赖 <properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><flink.version>1.14.6</flink.version&g…...

《论文阅读》用于情绪回复生成的情绪正则化条件变分自动编码器 Affective Computing 2021

《论文阅读》用于情绪回复生成的情绪正则化条件变分自动编码器 前言简介模型结构实验结果总结前言 今天为大家带来的是《Emotion-Regularized Conditional Variational Autoencoder for Emotional Response Generation》 出版:IEEE Transactions on Affective Computing 时间…...

Pytorch CIFAR10图像分类 Swin Transformer篇

Pytorch CIFAR10图像分类 Swin Transformer篇 文章目录 Pytorch CIFAR10图像分类 Swin Transformer篇4. 定义网络&#xff08;Swin Transformer&#xff09;Swin Transformer整体架构Patch MergingW-MSASW-MSARelative position biasSwin Transformer 网络结构Patch EmbeddingP…...

【vim】常用操作

用的时候看看&#xff0c;记太多也没用&#xff0c;下面都是最常用的&#xff0c;更多去查文档vim指令集。 以下均为正常模式下面操作&#xff0c;正在编辑的&#xff0c;先etc一下. 1/拷贝当前行 yy&#xff0c;5yy为拷贝包含当前行往下五行 2/p将拷贝的东西粘贴到当前行下…...

oracle、误操作删除数据库 数据恢复。

–查询 执行 delete 的语句 &#xff0c;拿到删除的时间 FIRST_LOAD_TIME &#xff0c;删除行数可参考 ROWS_PROCESSED select t.FIRST_LOAD_TIME,t.ROWS_PROCESSED,t.* from v$sql t where t.sql_text like %delete from trade% ;select *from trade as of timestamp to_time…...

【Angular开发】Angular在2023年之前不是很好

做一个简单介绍&#xff0c;年近48 &#xff0c;有20多年IT工作经历&#xff0c;目前在一家500强做企业架构&#xff0e;因为工作需要&#xff0c;另外也因为兴趣涉猎比较广&#xff0c;为了自己学习建立了三个博客&#xff0c;分别是【全球IT瞭望】&#xff0c;【架构师酒馆】…...

记录 | 报错:libssl-dev : 依赖: libssl3 (= 3.0.8-1ubuntu1.1) 但是 3.0.8-1ubuntu1.2 正要被安装

ubuntu 上安装 libssl-dev 失败的报错解决 报错&#xff1a; 下列软件包有未满足的依赖关系&#xff1a; libssl-dev : 依赖: libssl3 ( 3.0.8-1ubuntu1.1) 但是 3.0.8-1ubuntu1.2 正要被安装 E: 无法修正错误&#xff0c;因为您要求某些软件包保持现状&#xff0c;就是它们破…...

DockerHub与私有镜像仓库在容器化中的应用与管理

哈喽&#xff0c;大家好&#xff0c;我是左手python&#xff01; Docker Hub的应用与管理 Docker Hub的基本概念与使用方法 Docker Hub是Docker官方提供的一个公共镜像仓库&#xff0c;用户可以在其中找到各种操作系统、软件和应用的镜像。开发者可以通过Docker Hub轻松获取所…...

Mybatis逆向工程,动态创建实体类、条件扩展类、Mapper接口、Mapper.xml映射文件

今天呢&#xff0c;博主的学习进度也是步入了Java Mybatis 框架&#xff0c;目前正在逐步杨帆旗航。 那么接下来就给大家出一期有关 Mybatis 逆向工程的教学&#xff0c;希望能对大家有所帮助&#xff0c;也特别欢迎大家指点不足之处&#xff0c;小生很乐意接受正确的建议&…...

(二)TensorRT-LLM | 模型导出(v0.20.0rc3)

0. 概述 上一节 对安装和使用有个基本介绍。根据这个 issue 的描述&#xff0c;后续 TensorRT-LLM 团队可能更专注于更新和维护 pytorch backend。但 tensorrt backend 作为先前一直开发的工作&#xff0c;其中包含了大量可以学习的地方。本文主要看看它导出模型的部分&#x…...

【AI学习】三、AI算法中的向量

在人工智能&#xff08;AI&#xff09;算法中&#xff0c;向量&#xff08;Vector&#xff09;是一种将现实世界中的数据&#xff08;如图像、文本、音频等&#xff09;转化为计算机可处理的数值型特征表示的工具。它是连接人类认知&#xff08;如语义、视觉特征&#xff09;与…...

均衡后的SNRSINR

本文主要摘自参考文献中的前两篇&#xff0c;相关文献中经常会出现MIMO检测后的SINR不过一直没有找到相关数学推到过程&#xff0c;其中文献[1]中给出了相关原理在此仅做记录。 1. 系统模型 复信道模型 n t n_t nt​ 根发送天线&#xff0c; n r n_r nr​ 根接收天线的 MIMO 系…...

Python基于历史模拟方法实现投资组合风险管理的VaR与ES模型项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档&#xff09;&#xff0c;如需数据代码文档可以直接到文章最后关注获取。 1.项目背景 在金融市场日益复杂和波动加剧的背景下&#xff0c;风险管理成为金融机构和个人投资者关注的核心议题之一。VaR&…...

AI+无人机如何守护濒危物种?YOLOv8实现95%精准识别

【导读】 野生动物监测在理解和保护生态系统中发挥着至关重要的作用。然而&#xff0c;传统的野生动物观察方法往往耗时耗力、成本高昂且范围有限。无人机的出现为野生动物监测提供了有前景的替代方案&#xff0c;能够实现大范围覆盖并远程采集数据。尽管具备这些优势&#xf…...

在 Spring Boot 中使用 JSP

jsp&#xff1f; 好多年没用了。重新整一下 还费了点时间&#xff0c;记录一下。 项目结构&#xff1a; pom: <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://ww…...

LOOI机器人的技术实现解析:从手势识别到边缘检测

LOOI机器人作为一款创新的AI硬件产品&#xff0c;通过将智能手机转变为具有情感交互能力的桌面机器人&#xff0c;展示了前沿AI技术与传统硬件设计的完美结合。作为AI与玩具领域的专家&#xff0c;我将全面解析LOOI的技术实现架构&#xff0c;特别是其手势识别、物体识别和环境…...

git: early EOF

macOS报错&#xff1a; Initialized empty Git repository in /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/.git/ remote: Enumerating objects: 2691797, done. remote: Counting objects: 100% (1760/1760), done. remote: Compressing objects: 100% (636/636…...