当前位置: 首页 > 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;就是它们破…...

感知机为什么必须加偏置?从数学本质到工程落地全解析

1. 为什么感知机神经元必须带偏置输入&#xff1f;——从数学本质到工程实践的全链路拆解“Why Perceptron Neurons Need Bias Input?” 这个标题看似简单&#xff0c;实则直击人工神经网络最基础却最容易被忽略的底层设计逻辑。我在带高校AI实验课、指导工业界图像分类项目落…...

【AI Agent数据分析实战指南】:20年专家亲授5大落地场景、3类避坑红线与实时决策增效方案

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;AI Agent数据分析应用的演进逻辑与核心价值 AI Agent在数据分析领域的应用并非技术堆叠的结果&#xff0c;而是由数据复杂度跃升、业务响应时效压缩、以及人机协同范式重构三重力量共同驱动的系统性演进…...

OpCore Simplify:一键生成OpenCore EFI的终极解决方案

OpCore Simplify&#xff1a;一键生成OpenCore EFI的终极解决方案 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify 还在为黑苹果配置的复杂流程头疼吗&…...

从代购源码到生产环境:反向海淘系统部署与运维实战指南

代码写完之后&#xff0c;真正的考验才刚刚开始。 这是做代购网站开发时经常会遇到的另一个问题——开发的时候感觉一切顺利&#xff0c;一上线就各种出状况。数据库连接数不够、海外用户访问慢、订单高峰期系统卡死……这些问题我在之前的反向海淘项目里都经历过。 这些问题的…...

C++超详细讲解析构函数

析构函数是特殊的成员函数特征如下&#xff1a;析构函数名是~类名&#xff1b;无参数无返回值&#xff1b;一个类有且只有一个析构函数&#xff1b;对象声明周期结束&#xff0c;编译器自动调用析构函数&#xff1b;12345678910111213141516171819202122232425262728293031clas…...

Tina Linux嵌入式开发实战:从系统架构到应用移植全解析

1. 项目概述如果你正在接触全志科技的Tina Linux平台&#xff0c;无论是作为软件开发工程师还是技术支持&#xff0c;面对一个全新的嵌入式Linux SDK&#xff0c;最头疼的莫过于如何快速上手&#xff0c;理清从环境搭建到系统定制的整个脉络。这份指南就是为你准备的。Tina Lin…...

MoE混合专家架构:揭秘大模型参数激活率与真实算力开销

1. 这不是“参数越多越强”的简单故事&#xff1a;拆解大模型里那个被悄悄藏起来的“开关”你肯定见过这类标题&#xff1a;“GPT-4 参数高达1.8万亿&#xff01;”、“DeepSeek-R1 拥有6710亿参数&#xff01;”——光是数字本身就像一记重锤&#xff0c;砸得人头晕目眩。但真…...

UE5 Paper2D像素对齐核心:BitmapUtils.h原理与实战

1. 这个头文件不是“工具库”&#xff0c;而是UE5 Paper2D底层渲染的呼吸中枢 你打开UE5源码目录&#xff0c;搜索 BitmapUtils.h &#xff0c;大概率会在 Engine/Source/Runtime/Paper2D/Public/ 路径下找到它——它不像 Math/Vector2D.h 那样被高频引用&#xff0c;也不…...

【VibeCoding系列教程02】2026年AI编程避坑实录:这三大误区,让我多走了半年弯路

你们有没有发现&#xff0c;人这辈子最大的敌人不是别人&#xff0c;是自己脑子里那些乱七八糟的想法。前两天有个粉丝私信我&#xff0c;说老哥&#xff0c;我看你上次说Vibe Coding挺猛的&#xff0c;我也想学&#xff0c;但我有三个顾虑。我说你说说看。他说第一&#xff0c…...

AI模型连接失败的四大根源与10分钟排查指南

1. 这不是网络问题&#xff0c;是连接逻辑没对上“模型连接失败”这六个字&#xff0c;几乎每个刚接触AI开发的新手都见过——在本地跑通了代码&#xff0c;调用OpenAI或国内大模型API时突然卡在requests.exceptions.ConnectionError&#xff0c;或者返回一串看不懂的401 Unaut…...