c#学习笔记02——接口
本身并不实现功能,但提供一种模板定义,为从它继承类或结构提供了一种定义的规范
有了接口,程序员可以把程序定义的更积极啊清晰和条理化
- 理解接口
- 接口支持多继承;抽象类不能实现多继承
- 接口只能定义抽象规则;抽象类即可以定义规则,还可以提供已实现的成员
- 接口是一组行为规范;抽象类是一个不完全的类,着重族的概念
- 接口可以用于支持回调;抽象类不能支持回调,因为继承不支持
- 接口只包含方法、属性、索引器、事件的签名,但不能定义字段和包含实现的方法;抽象类可以定义字段、属性、包含有实现的方法
- 接口刻意作用于值类型和引用类型;抽象类只能作用于引用类型
- 作用上的区别 抽象类&接口
- 抽象类 是对象的抽象,着重表现在继承上,从抽象类派生的类和抽象类存在派生关系
- 接口 用来定义一组行为规范,一旦一个类从一个接口继承后,使用这个类的程序员就会知道这个类肯定包含接口定义的行为,而不用关心如何实现
using cs002;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace cs002
{
//定义抽象类
public abstract class Travel
{
protected string _name;
public abstract string Name//抽象属性
{
get;
set;
}
public void Show()
{
Console.WriteLine("这是{0}", _name); }
public abstract void GetWheel();
}
//定义接口
interface IAction
{
void Move();
}
interface test
{
void fuck();
} public class Car:Travel,IAction,test
{
public override string Name
{
get
{
return _name;
} set
{
_name = value;
}
}
public Car(string name)
{ _name = name; } public override void GetWheel()
{
Console.WriteLine("小汽车有四个轮子");
}
public void Move()
{
Console.WriteLine("小汽车行走在公路上");
}
public void fuck()
{
Console.WriteLine("fuck it!");
}
}
}
class Program
{
static void fun()
{
for (int i = ; i < ; i++)
Console.Write(i + " ");
Console.WriteLine(" ");
}
static void Main(string[] args)
{
Car c0 = new Car("宇宙无敌");
c0.GetWheel();
c0.Move();
c0.fuck();
}
} - 实现接口 接口是在其派生类中完成的 在c#中,派生类必须实现接口定义的成员;一个类可以派生自多个接口,接口之间用逗号隔开
- 实现接口↑
- 显式实现:继承多个接口,接口之间有重名的方法或属性;当显示实现接口时,类成员只能通过接口使用
using cs002;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace cs002
{
interface It1
{
void fuck();
}
interface It2
{
void fuck();
}
public class test : It1, It2
{
public test() { }
void It1.fuck()
{
Console.WriteLine("fuck you!");
}
void It2.fuck()
{
Console.WriteLine("fuck me!");
}
}
class Program
{
static void fun()
{
for (int i = ; i < ; i++)
Console.Write(i + " ");
Console.WriteLine(" ");
}
static void Main(string[] args)
{
test t = new test();
It1 t1 = (It1)t;
t1.fuck();
It2 t2 = (It2)t;
t2.fuck(); }
}
}
c#学习笔记02——接口的更多相关文章
- Redis:学习笔记-02
Redis:学习笔记-02 该部分内容,参考了 bilibili 上讲解 Redis 中,观看数最多的课程 Redis最新超详细版教程通俗易懂,来自 UP主 遇见狂神说 4. 事物 Redis 事务本 ...
- 软件测试之loadrunner学习笔记-02集合点
loadrunner学习笔记-02集合点 集合点函数可以帮助我们生成有效可控的并发操作.虽然在Controller中多用户负载的Vuser是一起开始运行脚本的,但是由于计算机的串行处理机制,脚本的运行 ...
- 机器学习实战(Machine Learning in Action)学习笔记————02.k-邻近算法(KNN)
机器学习实战(Machine Learning in Action)学习笔记————02.k-邻近算法(KNN) 关键字:邻近算法(kNN: k Nearest Neighbors).python.源 ...
- OpenCV 学习笔记 02 使用opencv处理图像
1 不同色彩空间的转换 opencv 中有数百种关于不同色彩空间的转换方法,但常用的有三种色彩空间:灰度.BRG.HSV(Hue-Saturation-Value) 灰度 - 灰度色彩空间是通过去除彩 ...
- SaToken学习笔记-02
SaToken学习笔记-02 如果排版有问题,请点击:传送门 常用的登录有关的方法 - StpUtil.logout() 作用为:当前会话注销登录 调用此方法,其实做了哪些操作呢,我们来一起看一下源码 ...
- 《Master Bitcoin》学习笔记02——比特币的交易模型
比特币的交易模型 模型基本描述 前面一篇学习笔记01提到了一个交易模型(第三章的内容),在第五章中,除了对这个模型做个详细介绍之外,其实和我上一篇理解的交易模型差不多,一个交易包含输入与输出,比特币是 ...
- [Golang学习笔记] 02 命令源码文件
源码文件的三种类型: 命令源文件:可以直接运行的程序,可以不编译而使用命令“go run”启动.执行. 库源码文件 测试源码文件 面试题:命令源码文件的用途是什么,怎样编写它? 典型回答: 命令源码文 ...
- 类型和变量(C#学习笔记02)
类型和变量 [C#类型和变量(原文参考官方教程)]https://docs.microsoft.com/zh-cn/dotnet/csharp/tour-of-csharp/types-and-var ...
- OGG学习笔记02
实验环境:源端:192.168.1.30,Oracle 10.2.0.5 单实例目标端:192.168.1.31,Oracle 10.2.0.5 单实例 1.模拟源数据库业务持续运行 2.配置OGG前 ...
随机推荐
- 干货分享|Critique Essay写作解析
Critique essay要求学生对另一篇文章进行批判性分析,通常是一本书.期刊文章或论文.不管你的专业是什么,你可能会被要求在某个时候写一篇Critique essay.拿心理学专业举例,评论一篇 ...
- Python MongoDB 创建集合
章节 Python MySQL 入门 Python MySQL 创建数据库 Python MySQL 创建表 Python MySQL 插入表 Python MySQL Select Python M ...
- word 2007 文档中添加文件
1. "插入"->"对象",出现的下拉框中选择"对象" 2.弹出界面 3.切换至"由文件创建",点击"浏 ...
- ffmpeg 模块简介
FFmpeg 是一套可以用来记录.转换数字音频.视频,并能将其转化为流的开源计算机程序.它包括了领先的音/视频编码库libavcodec 等.libavformat:用于各种音视频封装格式的生成和解析 ...
- 使用Redis SortedSet实现增量更新
导读:前段时间有个需求是提供一个接口供客户端增量更新数据,当有数据被删除了以后客户端也需要感知到,并且要支持一定并发: 关键词:高并发,增量更新 前言 何谓增量更新,顾名思义就是只更新变化的部分,这样 ...
- 关于spring cloud “Finchley.RC2”版本在spring cloud config中的ArrayIndexOutOfBoundsException
原文 https://www.cnblogs.com/Little-tree/p/9166382.html 在学spring cloud config的时候遇到一个ArrayIndexOutOfBou ...
- 关于torch.flatten的笔记
先看函数参数: torch.flatten(input, start_dim=0, end_dim=-1) input: 一个 tensor,即要被“推平”的 tensor. start_dim: “ ...
- 一、VIP课程:互联网工程专题 01-Git基本概念与核心命令掌握
第一课:Git基本概念与核心命令掌握.docx 课程概要: GIT 体系概述 GIT 核心命令使用 GIT 底层原理 一.GIT体系概述 1.使用方式区别 从本地把文件推送远程服务,SVN只需要com ...
- Vue 指令 v-text v-html
有三个指令达到的效果是一样的 {{JS表达式}} 差值表达式 v-text="JS表达式" v-html="JS表达式" //会自动解析tag js表达式 ...
- 【Linux】linux用户系统管理
Linux系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须拥有一个账号,然后以这个账号的身份进入系统. 用户:使用linux系统的人. 用户组:具有相同权限的一组用户. li ...