C#接口的实现和继承实践
1.基本概念
接口是一种契约规范,类似于抽象基类。包括方法,属性,索引器和事件作为成员,这些成员只是作为定义,并不在接口中具体实现。
接口创建时注意以下事项:
- 继承接口的任何非抽象类都必须实现接口的所有成员
- 不能直接实例化接口
- 接口可以包含事件,索引器,属性和方法,不包括方法的实现
- 类和结构可从多个接口继承,中间用“,”隔开
- 接口自身可从多个接口继承
接口声明格式如下
修饰符 interface 接口名称:继承接口列表(非继承接口可省去该部分)
{
接口内容:属性,方法,索引器,事件
}
2.使用实例
如定义一个信息类接口,包含编码和名称属性及信息显示方法。
通过销售类信息和进货类信息继承该接口。
整个文档接口如下:

- 接口定义
namespace CSCOMExample
{
public interface Informatioin
{
string Code { get; set; } //编码属性
string Name { get; set; }//名称属性
void ShowInfo();//输出信息方法
} }
- 进货类
namespace CSCOMExample
{ /// <summary>
/// 进货信息继承接口
/// </summary>
public class JHInfo : Informatioin //继承接口
{
string code = "";
string name = "";
/// <summary>
/// 实现编码属性
/// </summary>
public string Code
{
get { return code; }
set { code = value; }
}
/// <summary>
/// 实现名称属性
/// </summary>
public string Name
{
get { return name; }
set { name = value; }
}
/// <summary>
/// 实现进货显示信息方法
/// </summary>
void Informatioin.ShowInfo()
{
Console.WriteLine("进货信息:\n" + Code + " " + Name);
}
}
}
- 销售类
namespace CSCOMExample
{
/// <summary>
/// 销售信息继承接口
/// </summary>
public class XSInfo : Informatioin //继承接口
{
string code = "";
string name = "";
/// <summary>
/// 实现编码属性
/// </summary>
public string Code
{
get { return code; }
set{code =value; }
}
/// <summary>
/// 实现名称属性
/// </summary>
public string Name
{
get{return name; }
set { name=value; }
}
/// <summary>
///销售信息显示方法
/// </summary>
void Informatioin.ShowInfo()
{
Console.WriteLine("销售信息:\n" + Code + " " + Name);
}
}
}
以上,分别在JHInfo类和XSInfo类中对接口的属性和方法进行了实现。如此,一个信息接口Information就完成了。
再做一个测试程序,检测接口:
namespace ComText
{
class Program
{
static void Main(string[] args)
{
Informatioin[] Infos = { new JHInfo(), new XSInfo() };//定义接口数组
Infos[].Code = "JH0001";
Infos[].Name = "笔记本电脑";
Infos[].ShowInfo(); Infos[].Code = "XS0001";
Infos[].Name = "荣耀手机";
Infos[].ShowInfo();
Console.ReadLine();
}
}
}
输出结果如下:

C#接口的实现和继承实践的更多相关文章
- JAVA与多线程开发(线程基础、继承Thread类来定义自己的线程、实现Runnable接口来解决单继承局限性、控制多线程程并发)
实现线程并发有两种方式:1)继承Thread类:2)实现Runnable接口. 线程基础 1)程序.进程.线程:并行.并发. 2)线程生命周期:创建状态(new一个线程对象).就绪状态(调用该对象的s ...
- [Java] 类和接口的初始化步骤 - 继承方面
类和接口在初始化化时,处理继承层级的方法不一样. 类继承的初始化:通过引用 static 字段,触发某个类的初始化,则声明该字段的类,以及该类的父类被初始化. 接口继承的初始化:通过引用 static ...
- 【Java面试题】60 接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承具体类(concrete class)? 抽象类中是否可以有静态的main方法?
接口可以继承接口.抽象类可以实现(implements)接口,抽象类可以继承具体类.抽象类中可以有静态的main方法. 问: 抽象类是否可继承实体类 (concrete class) 答: 抽象类是 ...
- 接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承实体类(concrete class)?
接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承实体类(concrete class)? 答:接口可以继承接口.抽象类可以实现(implements)接口,抽象类 ...
- 接口和抽象类是否继承了Object
我们先看一下Java的帮助文档对于Object的描述: Class Object is the root of the class hierarchy. Every class has Object ...
- c# 第37节 接口的实现与继承
本节内容: 1:接口继承注意 2:开发封闭原则: 3:实例解释接口的作用 1:接口继承注意 接口的继承: :类继承具有单根性,接口可多重继承: :接口继承多个接口的时候,派生接口名与父接口用冒号隔开, ...
- Spring Security 接口认证鉴权入门实践指南
目录 前言 SpringBoot 示例 SpringBoot pom.xml SpringBoot application.yml SpringBoot IndexController SpringB ...
- 接口是干爹, 继承是亲爹 ---JAVA
接口(interface)是干爹, 因为你可以有很多很多的干爹爹... 继承(extends)是亲爹, 因为你只能有一个父类, 只有一个亲生的父亲. 单继承,多接口?./>./..
- EffectiveC#00--选择定义和实现接口,而不是继承
1.继承就是说它是某物(is a的关系),针对相关类,而接口是说它有某个功能(behaves like.)可以是不相关的 基类是描述对象是什么,接口描述对象有某种行为. 2.不能在接口里提供任何成员的 ...
随机推荐
- sql:union 与union的使用和区别
SQL UNION 操作符 UNION 操作符用于合并两个或多个 SELECT 语句的结果集. 请注意,UNION 内部的 SELECT 语句必须拥有相同数量的列.列也必须拥有相似的数据类型.同时,每 ...
- AIX中的/etc/inittab文件
1./etc/inittab文件 /etc/inittab文件从上到下逐行表述了某个服务或应用的启动需求.运行级别.应用脚本,格式如下: identifier:Runlevel: Action: ...
- 百度贴吧自动回帖的两种方式,使用requests(urllib2)和selenium两种方式回帖
本文介绍,回复贴吧指定某楼层主的帖子的方法.在这里不介绍无限发主贴和无限回复主贴的方法,无限发主题帖会爆吧,引起别人的反感,并且很容易遭到吧主的封杀:无限回主题帖,会让整个帖子的每楼的回复充满了自己的 ...
- controller 有两种写法,讨论一下两种写法的区别:
controller 有两种写法,讨论一下两种写法的区别: 写法 1: app.controller('myCtrl', function($scope, $location) { $scope.my ...
- 【hiho1041】国庆出游 dfs+bitset
题目大意:给定一棵 N 个节点的有根树,1 号节点为根节点,现遍历整棵树,要求每条边仅被经过两次,问是否存在一种特定的遍历方式使得 dfs 序中节点的相对前后关系符合给定的顺序. 题解: 首先,由于要 ...
- Canvas + WebSocket + Redis 实现一个视频弹幕
原文出自:https://www.pandashen.com 页面布局 首先,我们需要实现页面布局,在根目录创建 index.html 布局中我们需要有一个 video 多媒体标签引入我们的本地视频, ...
- Linux系统中的硬件问题如何排查?(4)
Linux系统中的硬件问题如何排查?(4) 2013-03-27 10:32 核子可乐译 51CTO.com 字号:T | T 在Linux系统中,对于硬件故障问题的排查可能是计算机管理领域最棘手的工 ...
- ansj分词器使用记录
//最简单实例 String ruiec = “分词测试123456100名”; //剔除指定的分词 s.insertStopWords("100名"); //剔除标点符号(w) ...
- #python#return和print的一些理解
https://www.jianshu.com/p/18a6c0c76438 代码 (1) ++++++++++++++++++++++++++++++++++ x = 1y = 2def add ( ...
- 使用net命令启动MongoDB服务发生系统错误,返回值为5
使用net命令启动MongoDB服务发生系统错误,返回值为5 错误的截图如下: 解决的方案是以管理员的身份运行命令窗口,参考如下: https://www.cnblogs.com/fanblogs/p ...