八、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> /// 第十三章:创建接口和定义抽象类 /// </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࿰…...
C++如何通过调用ffmpeg接口对H264文件进行编码和解码
C可以通过调用FFmpeg的API来对H264文件进行编码和解码。下面是一个简单的例子。 首先需要在代码中包含FFmpeg的头文件: extern "C" { #include <libavcodec/avcodec.h> #include <libavformat/avformat.h> #include <libswscale/swscale…...
使用MetaMask + Ganache搭建本地私有网络并实现合约部署与互动
我使用Remix编写合约,MetaMask钱包工具和Ganache搭建了一个私有网络,并且实现了合约的部署和互动。 在前面的博客中提到了 Remix在线环境及钱包申请 以及 Solidity的基本语法 ,没看过的小伙伴可以点击链接查看一下,都是在本专栏下…...
目标检测、目标跟踪、重识别
文章目录 环境前言项目复现特征提取工程下载参考资料 环境 ubuntu 18.04 64位yolov5deepsortfastreid 前言 基于YOLOv5和DeepSort的目标跟踪 介绍过针对行人的检测与跟踪。本文介绍另一个项目,结合 FastReid 来实现行人的检测、跟踪和重识别。作者给出的2个主…...
高防IP防御效果怎么样,和VPN有区别吗
高防IP主要是用于防御网络攻击,可以抵御各种类型的DDoS攻击,隐藏源IP地址,提高网络安全性和用户体验。主要目的是解决外部网络攻击问题,保护网络安全,避免因攻击而导致的业务中断和数据泄露等问题。 而VPN则是一种可以…...
探秘MSSQL存储过程:功能、用法及实战案例
在现代软件开发中,高效地操作数据库是至关重要的。而MSSQL(Microsoft SQL Server)作为一款强大的关系型数据库管理系统,为我们提供了丰富的功能和工具来处理数据。其中,MSSQL存储过程是一项强大而又常用的功能…...
我们常说的流应用到底是什么?
流应用是DCloud公司开发的一种可以让手机App安装包实现边用边下的技术。基于HTML5规范的即点即用应用,开发者按照HTML5规范开发的应用,可以在支持HTML5流应用的发行渠道实现即点即用的效果。 流应用是基于 HTML5规范的即点即用应用,开发者按照…...
ELK 日志解决方案
ELK 是目前最流行的集中式日志解决方案,提供了对日志收集、存储、展示等一站式的解决方案。 ELK 分别指 Elasticsearch、Logstash、Kibana。 Elasticsearch:分布式数据搜索引擎,基于 Apache Lucene 实现,可集群,提供…...
本项目基于Spring boot的AMQP模块,整合流行的开源消息队列中间件rabbitMQ,实现一个向rabbitMQ
在业务逻辑的异步处理,系统解耦,分布式通信以及控制高并发的场景下,消息队列有着广泛的应用。本项目基于Spring的AMQP模块,整合流行的开源消息队列中间件rabbitMQ,实现一个向rabbitMQ添加和读取消息的功能。并比较了两种模式&…...
freeswitch webrtc video_demo客户端进行MCU的视频会议
系统环境 一、编译服务器和加载模块 二、下载编译指定版本video_demo 三、配置verto.conf.xml 1.修改配置文件 2.重新启动 四、MCU通话测试 1.如何使用video_demo 2.测试结果 五、MCU的通话原理及音频/视频/布局/管理员等参数配置 附录 freeswitch微信交流群 系统环境 lsb_rel…...
【鸿蒙学习网络】
鸿蒙技术学习相关学习资料 官方文档:华为官方提供了鸿蒙开发者文档,包括开发指南、API参考和示例代码等。您可以访问华为开发者中心网站(https://developer.harmonyos.com/)获取最新的官方文档和教程。在 线 课 程 : …...
MySQL系列(一):索引篇
为什么是B树? 我们推导下,首先看下用哈希表做索引,是否可以满足需求。如果我们用哈希建了索引,那么对于如下这种SQL,通过哈希,可以快速检索出数据: select * from t_user_info where id1;但是这…...
Flink Flink数据写入Kafka
一、环境准备 官网地址 flink官方集成了通用的 Kafka 连接器,使用时需要根据生产环境的版本引入相应的依赖 <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. 定义网络(Swin Transformer)Swin Transformer整体架构Patch MergingW-MSASW-MSARelative position biasSwin Transformer 网络结构Patch EmbeddingP…...
【vim】常用操作
用的时候看看,记太多也没用,下面都是最常用的,更多去查文档vim指令集。 以下均为正常模式下面操作,正在编辑的,先etc一下. 1/拷贝当前行 yy,5yy为拷贝包含当前行往下五行 2/p将拷贝的东西粘贴到当前行下…...
oracle、误操作删除数据库 数据恢复。
–查询 执行 delete 的语句 ,拿到删除的时间 FIRST_LOAD_TIME ,删除行数可参考 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年之前不是很好
做一个简单介绍,年近48 ,有20多年IT工作经历,目前在一家500强做企业架构.因为工作需要,另外也因为兴趣涉猎比较广,为了自己学习建立了三个博客,分别是【全球IT瞭望】,【架构师酒馆】…...
记录 | 报错:libssl-dev : 依赖: libssl3 (= 3.0.8-1ubuntu1.1) 但是 3.0.8-1ubuntu1.2 正要被安装
ubuntu 上安装 libssl-dev 失败的报错解决 报错: 下列软件包有未满足的依赖关系: libssl-dev : 依赖: libssl3 ( 3.0.8-1ubuntu1.1) 但是 3.0.8-1ubuntu1.2 正要被安装 E: 无法修正错误,因为您要求某些软件包保持现状,就是它们破…...
TA6585替代品6586直流双向电机驱动芯片详解
在电机驱动领域,芯片的性能、稳定性与适配性决定着设备的运行效果与使用寿命。6586作为TA6585的替代品,是一款高性能直流双向电机驱动芯片,凭借其小巧的封装、全面的保护功能及广泛的适配场景,替代TA6585,成为玩具、智…...
解锁Mac网络新姿势:HoRNDIS驱动让Android USB共享一键直达
解锁Mac网络新姿势:HoRNDIS驱动让Android USB共享一键直达 【免费下载链接】HoRNDIS Android USB tethering driver for Mac OS X 项目地址: https://gitcode.com/gh_mirrors/ho/HoRNDIS 还在为Mac无法直接使用Android手机的网络而烦恼吗?HoRNDIS…...
三步打造个性化Android体验:从零开发Magisk主题模块
三步打造个性化Android体验:从零开发Magisk主题模块 【免费下载链接】Magisk The Magic Mask for Android 项目地址: https://gitcode.com/GitHub_Trending/ma/Magisk 问题导向:为什么需要系统主题模块? 你是否曾对千篇一律的Android…...
lychee-rerank-mm环境部署:NVIDIA驱动470+、CUDA 12.x兼容性验证清单
lychee-rerank-mm环境部署:NVIDIA驱动470、CUDA 12.x兼容性验证清单 1. 项目概述与核心价值 lychee-rerank-mm是一个专为RTX 4090显卡优化的多模态重排序系统,基于Qwen2.5-VL架构和Lychee-rerank-mm模型构建。这个系统能够对批量图片与文本描述进行智能…...
Oracle数据泵导入中断处理:正确使用kill_job与stop_job
1. 数据泵导入中断的紧急处理场景 上周五凌晨2点,我正盯着屏幕上的数据泵导入进度条。这是某电商平台大促前的数据库迁移,200GB的订单数据需要通过impdp导入新库。突然机房空调故障告警响起,眼看着服务器温度飙升到45度,我必须在…...
YOLO26改进 - 注意力机制 | PPA(Parallelized Patch-Aware Attention)并行补丁感知注意:分层特征融合保持小目标表征
前言 本文介绍了用于红外小目标检测的深度学习方法HCF-Net及其在YOLO26中的结合应用。HCF-Net采用升级版U-Net架构,包含PPA、DASI和MDCR三个关键模块。PPA模块利用分层特征融合和注意力机制,采用多分支特征提取策略,捕获不同尺度和级别的特征信息;DASI模块增强跳跃连接,实…...
LiuJuan20260223Zimage实战:如何通过Gradio界面生成高质量人像图片
LiuJuan20260223Zimage实战:如何通过Gradio界面生成高质量人像图片 1. 认识LiuJuan20260223Zimage模型 LiuJuan20260223Zimage是一个基于Z-Image模型并融合LoRA技术的文生图模型,专门用于生成特定风格的人像图片。这个模型最大的特点是: 专…...
Pixel Couplet Gen效果展示:基于用户画像(年龄/地域)的像素春联风格个性化推荐
Pixel Couplet Gen效果展示:基于用户画像(年龄/地域)的像素春联风格个性化推荐 1. 项目概览 Pixel Couplet Gen是一款融合传统春节文化与现代像素艺术风格的AI春联生成器。通过ModelScope大模型的强大生成能力,结合精心设计的8-…...
科哥二次开发AWPortrait-Z体验:批量生成人像,效率提升300%
科哥二次开发AWPortrait-Z体验:批量生成人像,效率提升300% 1. 为什么选择AWPortrait-Z进行人像生成? 在当今内容创作领域,高质量人像需求呈现爆发式增长。从电商产品展示到社交媒体内容,专业级人像已经成为刚需。然而…...
掰开揉碎魔改claudecode后,我盯着 Claude Code 跑了一圈,终于看懂顶级 AI Agent是如何炼成的
开头先来一句狠的很多人以为,Claude Code 之所以强,是因为模型更聪明。但我把它运行时真正生效的 Payload 抓出来之后,结论反而更明确了:顶级 AI Agent 的差距,很多时候不在模型本身,而在它背后那套“怎么约…...
