(转)C#Interface简介
接口只包含方法、委托或事件和属性的签名(接口包含的成员)、不能包含字段(因为字段是包含数据的)。方法的实现是“继承”接口的类中完成的;
接口可以包含的成员的访问修饰符只能且默认为public;
一个接口可以从一个或多个基接口继承;
接口类似于抽象基类:继承接口的任何非抽象类型都必须实现接口的所有成员;
当基类型列表包含基类和接口时,基类必须是列表中的第一项;
实现接口的类可以显式实现该接口的成员,显示实现的成员不能通过类实例访问,而只能通过接口实例访问;
类和结构可以按照类继承基类或结构的类似方式继承接口;但注意:
类或结构可继承多个接口;
类或结构继承接口时,仅继承方法名称和签名,因为接口本身不包含实现;
接口和接口成员是抽象的(但不用写出abstract关键字);接口不提供默认实现;
下面的例子很好的说明了这点:
interface IMyInt//定义一个接口:通讯工具的接口
{
string Name//包含只读字段的通讯工具名属性
{
get;
}
string Number//通讯工具的号码属性
{
get;
set;
}
}
public class Tel : IMyInt//固定电话类型
{
string name = "固定电话";
string number;
//对接口中Name和Number的实现
public string Name
{
get { return name; }
}
public string Number
{
get
{
return number;
}
set
{
number = value;
}
}
}
public class Phone : IMyInt//移动电话类型
{
string name = "移动电话";
string number;
public string Name
{
get { return name; }
}
public string Number
{
get
{
return number;
}
set
{
number = value;
}
}
}
public class Fax : IMyInt//传真机类型
{
string number;
public string Name
{
get { return name; }
}
public string Number
{
get
{
return number;
}
set
{
number = value;
}
}
}
public class Program
{
static List<IMyInt> list = new List<IMyInt>();//存放IMyInt接口的列表集合;
static string select = " ";//选择变量
static void AddNum(IMyInt myint)//添加号码的方法;注意:此处参数的类型是IMyInt,这样无论添加的是Tel、Phone、Fax类型, //都可以向list里面添加;即:好型接口提供了一个模糊的模型,满足这个模型的继承了这个接 //口的类型都可以作为参数;
{
list.Add(myint);
}
static void Main()//程序的入口点Main
{
for (int i = 0; i < 3; i++)
{
string num = "";
Console.WriteLine("1、Fax");
Console.WriteLine("2、Phone");
Console.WriteLine("3、Tel");
select = Console.ReadLine();
Console.Write("输入添加的号码");
if (select == "1")
{
Fax f = new Fax();
num = Console.ReadLine();
f.Number = num;
AddNum(f);//AddNum方法的调用
}
if (select == "2")
{
Phone p = new Phone();
num = Console.ReadLine();
p.Number = num;
AddNum(p);
}
if (select == "3")
{
Tel t = new Tel();
num = Console.ReadLine();
t.Number = num;
AddNum(t);
}
}
for (int i = 0; i < list.Count; i++)
{
Console.WriteLine("name:{0};number:{1}", list[i].Name, list[i].Number);
}
Console.ReadLine();
}
}
(转)C#Interface简介的更多相关文章
- Java SPI(Service Provider Interface)简介
SPI 简介 SPI 全称为(Service Provider Interface),是JDK内置的一种服务提供发现机制. 一个服务(Service)通常指的是已知的接口或者抽象类,服务提供方就是对这 ...
- 【Java 8】函数式接口(一)—— Functional Interface简介
什么是函数式接口(Functional Interface) 其实之前在讲Lambda表达式的时候提到过,所谓的函数式接口,当然首先是一个接口,然后就是在这个接口里面只能有一个抽象方法. 这种类型的接 ...
- 谨慎使用Marker Interface
之所以写这篇文章,源自于组内的一些技术讨论.实际上,Effective Java的Item 37已经详细地讨论了Marker Interface.但是从整个Item的角度来看,其对于Marker In ...
- golang面向对象和interface接口
一. golang面向对象介绍 1.golang也支持面向对象编程,但是和传统的面向对象编程有区别,并不是纯粹的面向对象语言.2.golang没有类(class),golang语言的结合体(struc ...
- Go语言第一深坑:interface 与 nil 的比较
interface简介 Go 语言以简单易上手而著称,它的语法非常简单,熟悉 C++,Java 的开发者只需要很短的时间就可以掌握 Go 语言的基本用法. interface 是 Go 语言里所提供的 ...
- go语言之行--接口(interface)、反射(reflect)详解
一.interface简介 interface(接口)是golang最重要的特性之一,Interface类型可以定义一组方法,但是这些不需要实现.并且interface不能包含任何变量. 简单的说: ...
- 1_BLE nRF51822 UART 与 BLE转发
去年Noridc出了集成蓝牙4.0并能开口说话24L01通信芯片,这部电影可以非常小包装.和低功耗.非常适合于可穿戴设备,然后挖了一个免费的手在不久的将来AK II,又没了一个Becon的板子.先玩了 ...
- 1.Hibernate简介
1.框架简介: 定义:基于java语言开发的一套ORM框架: 优点:a.方便开发; b.大大减少代码量; c.性能稍高(不能与数据库高手相比,较一般数据库使用者 ...
- 图形数据库Neo4J简介
最近我在用图形数据库来完成对一个初创项目的支持.在使用过程中觉得这种图形数据库实际上挺有意思的.因此在这里给大家做一个简单的介绍. NoSQL数据库相信大家都听说过.它们常常可以用来处理传统的关系型数 ...
随机推荐
- network: Android 网络判断(wifi、3G与其他)
package mark.zeng; import Java.util.List; import Android.content.Context; import android.location.Lo ...
- java数组排序之冒泡排序
上一篇文章说了,选择排序. 选择排序的原理就是,先确定第一个格子当中的数字是最小的,之后确定第二个格子是其他数字中最小的依次类推. 这一节当中我们来看下冒泡排序: 思路: 1.首先拿第一个数字跟第二个 ...
- Javascript面向对象编程(三):非构造函数的继承 by 阮一峰
今天是最后一个部分,介绍不使用构造函数实现"继承". 一.什么是"非构造函数"的继承? 比如,现在有一个对象,叫做"中国人". var Ch ...
- Agri-Net(prim算法,最小生成树问题)
看图便知道: 来来上代码: #include <cstdio>#include <cstdlib>#include <cstring>#includ ...
- Spring配置多个数据源
Spring 配置多数据源实现数据库读写分离 博客分类: Spring 数据库 现在大型的电子商务系统,在数据库层面大都采用读写分离技术,就是一个Master数据库,多个Slave数据库.Mast ...
- __block的作用
__block 的标记告诉编译器,这个变量在 block 里面需要做特殊处理. 一般来说,在 block 中用的变量值是被复制过来的,所以对于变量本身的修改并不会影响这个变量的真实值.而当我们用 __ ...
- Swift: The Basics
Swift是类型安全的语言: Swift introduces optional types, which handle the absence of a value. Optional say ei ...
- 《Android开发艺术探索》读书笔记 (1) 第1章 Activity的生命周期和启动模式
第1章 Activity的生命周期和启动模式 1.1 Activity生命周期全面分析 1.1.1 典型情况下生命周期分析(1)一般情况下,当当前Activity从不可见重新变为可见状态时,onRes ...
- Android 模仿QQ空间风格的 UI(转)
本文内容 环境 演示模仿QQ空间风格的UI 虽然这个 UI 跟现在的QQ空间有点差别,但是也能学到很多东西. 下载 Demo 环境 Windows 7 64 位 Eclipse ADT V22.6.2 ...
- Android(java)学习笔记237:多媒体之图形的变化处理
1.图形的缩放 (1)布局文件activity_main.xml如下: <LinearLayout xmlns:android="http://schemas.android.com/ ...