1.基本概念

接口是一种契约规范,类似于抽象基类。包括方法,属性,索引器和事件作为成员,这些成员只是作为定义,并不在接口中具体实现。

接口创建时注意以下事项:

  1. 继承接口的任何非抽象类都必须实现接口的所有成员
  2. 不能直接实例化接口
  3. 接口可以包含事件,索引器,属性和方法,不包括方法的实现
  4. 类和结构可从多个接口继承,中间用“,”隔开
  5. 接口自身可从多个接口继承

接口声明格式如下

修饰符 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#接口的实现和继承实践的更多相关文章

  1. JAVA与多线程开发(线程基础、继承Thread类来定义自己的线程、实现Runnable接口来解决单继承局限性、控制多线程程并发)

    实现线程并发有两种方式:1)继承Thread类:2)实现Runnable接口. 线程基础 1)程序.进程.线程:并行.并发. 2)线程生命周期:创建状态(new一个线程对象).就绪状态(调用该对象的s ...

  2. [Java] 类和接口的初始化步骤 - 继承方面

    类和接口在初始化化时,处理继承层级的方法不一样. 类继承的初始化:通过引用 static 字段,触发某个类的初始化,则声明该字段的类,以及该类的父类被初始化. 接口继承的初始化:通过引用 static ...

  3. 【Java面试题】60 接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承具体类(concrete class)? 抽象类中是否可以有静态的main方法?

    接口可以继承接口.抽象类可以实现(implements)接口,抽象类可以继承具体类.抽象类中可以有静态的main方法. 问:  抽象类是否可继承实体类 (concrete class) 答: 抽象类是 ...

  4. 接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承实体类(concrete class)?

    接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承实体类(concrete class)? 答:接口可以继承接口.抽象类可以实现(implements)接口,抽象类 ...

  5. 接口和抽象类是否继承了Object

    我们先看一下Java的帮助文档对于Object的描述: Class Object is the root of the class hierarchy. Every class has Object ...

  6. c# 第37节 接口的实现与继承

    本节内容: 1:接口继承注意 2:开发封闭原则: 3:实例解释接口的作用 1:接口继承注意 接口的继承: :类继承具有单根性,接口可多重继承: :接口继承多个接口的时候,派生接口名与父接口用冒号隔开, ...

  7. Spring Security 接口认证鉴权入门实践指南

    目录 前言 SpringBoot 示例 SpringBoot pom.xml SpringBoot application.yml SpringBoot IndexController SpringB ...

  8. 接口是干爹, 继承是亲爹 ---JAVA

    接口(interface)是干爹, 因为你可以有很多很多的干爹爹... 继承(extends)是亲爹, 因为你只能有一个父类, 只有一个亲生的父亲. 单继承,多接口?./>./..

  9. EffectiveC#00--选择定义和实现接口,而不是继承

    1.继承就是说它是某物(is a的关系),针对相关类,而接口是说它有某个功能(behaves like.)可以是不相关的 基类是描述对象是什么,接口描述对象有某种行为. 2.不能在接口里提供任何成员的 ...

随机推荐

  1. 剑指offer-6:数值整数次方

    一.题目描述 给定一个double类型的浮点数base和int类型的整数exponent.求base的exponent次方. 二.解题思想 分类讨论,充分考虑每种可能. exponent :0,1,& ...

  2. java.lang.Object类(JDK1.7)

    1.Object的类方法 package java.lang; public class Object { private static native void registerNatives(); ...

  3. Wannafly挑战赛22 C 多项式(大数,多项式极限)

    链接:https://ac.nowcoder.com/acm/contest/160/C 来源:牛客网 多项式 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言 ...

  4. creat-react-app生成的项目默认端口号是3000,如何更改?

    从项目的 package.json 文件中可以看到,npm start即scripts start.js,因此我们找到scripts/start.js ,部分代码如下: 找到 DEFAULT_PORT ...

  5. Python之常用模块之小结

    复习os模块常用的一些操作 import os # 1.切换路径============= d = os.getcwd() #获取当前的工作路径 os.chdir('D:\\')#目录的切换 prin ...

  6. Python之面向对象之单例模式的四种方式

    一.内容 保证一个类只有一个实例,并提供一个访问它的全局访问点 二.角色 单利 三.使用场景 当类只有一个实例而且客户可以从一个众所周知的访问点访问它时 比如:数据库链接.Socket创建链接 四.优 ...

  7. CMDB架构需求实现

    CMDB资产管理部分实现 需求 1.存储所有IT资产信息 2.数据可手动添加 3.硬件信息可自动收集 4.硬件信息可自动变更 5.可对其他系统灵活开放API 6.API接口安全认证 立业之本:定义表结 ...

  8. 40 final、finally、finalize的区别

    1.final 用于声明属性.方法.类.分别表示属性不可被改变,方法不可被覆盖,类不可被继承. (1)一个类不能既被声明为abstract的,又被声明为final的. (2)被声明为final的变量必 ...

  9. git windows下换行符问题

    不同操系统下的换行符 CR回车 LF换行 Windows/Dos CRLF \r\n Linux/Unix LF \n MacOS CR \r 1.执行git config --get core.au ...

  10. node.js入门学习(二)MIME模块,request和response对象,demo之不同url请求不同html页面,页面包含图片、样式css等静态资源

    一.构建http服务程序-根据不同请求做出不同响应 // 加载http模块 var http = require("http"); // 创建一个http服务对象 http.cre ...