七、C# 接口
class Program
{
static void Main(string[] args)
{ IListTable i;
Contact c = new Contact();
c.Name = "name1";
Console.WriteLine(c.ColnumName); Appointment a = new Appointment();
a.Name = "name2";
Console.WriteLine(((IListTable)a).ColnumName); Console.ReadLine(); }
} interface IListTable
{
string ColnumName
{ get; }
}
public class Contact : IListTable
{
public string Name
{
get
{
return FirtstName;
}
set
{
FirtstName = value + " from Contact";
}
}
private string FirtstName;
//隐式实现
public string ColnumName
{
get { return FirtstName + " ColnumName"; }
set { FirtstName = value; }
} }
public class Appointment : IListTable
{
public string Name
{
get
{
return FirtstName;
}
set
{
FirtstName = value + " from Appointment";
}
}
private string FirtstName; //显式实现
string IListTable.ColnumName
{
get { return FirtstName + " ColnumName"; }
//set { FirtstName = value; }//错误
} }
class Program
{
static void Main(string[] args)
{ }
} public interface IReadAbleSettingsProvider
{
string GetSetting(string name, string defaultValue);
}
public interface ISettingsProvider : IReadAbleSettingsProvider
{
void SetSetting(string name, string value);
}
class FileSettingsProvider : ISettingsProvider
{
public void SetSetting(string name, string value)
{
//
}
string IReadAbleSettingsProvider.GetSetting(string name, string defaultValue)
{
//
return " ";
}
}
class FileSettingsProvider : ISettingsProvider, IReadAbleSettingsProvider
{
public void SetSetting(string name, string value)
{
//
}
string IReadAbleSettingsProvider.GetSetting(string name, string defaultValue)
{
//
return " ";
}
}
class Program
{
static void Main(string[] args)
{ Contact[] items = new Contact[] { new Contact(), new Contact() };
for (int i = ; i < items.Length; i++)
{
items[i].ColnumName = "name" + i;
}
items.ListColumn(); Console.ReadLine(); }
} interface IListTable
{
string ColnumName
{ get; }
}
public class Contact : IListTable
{
public string Name
{
get
{
return FirtstName;
}
set
{
FirtstName = value + " from Contact";
}
}
private string FirtstName;
//隐式实现
public string ColnumName
{
get { return FirtstName + " ColnumName"; }
set { FirtstName = value; }
} } static class Listable
{
public static void ListColumn(this IListTable[] items)
{
string headers = "";
for (int i = ; i < items.Length; i++)
{
headers += items[i].ColnumName + ",";
}
Console.WriteLine(headers);
}
}
public class PdaItem
{
public PdaItem()
{
}
public PdaItem(DateTime pLastUpdated)
{ LastUpdated = pLastUpdated;
}
public DateTime LastUpdated { set; get; }
}
interface IPerson
{
string FirstName { set; get; }
string LastName { set; get; }
}
public class Person : IPerson
{
public string Address { set; get; }
public string Phone { set; get; } public string FirstName { set; get; }
public string LastName { set; get; }
}
//使用聚合(实现继承Person 和 PdaItem 两个类,并将方法和属性放到接口当中
public class Contact : PdaItem, IPerson
{
private Person _Person;
public Person person
{
set
{
_Person = value;
}
get
{
return _Person;
}
}
public string FirstName
{
get
{
return _Person.FirstName;
}
set
{
_Person.FirstName = value;
}
}
public string LastName
{
get
{
return _Person.LastName;
}
set
{
_Person.LastName = value;
}
} }
七、C# 接口的更多相关文章
- Java基础知识笔记(七:接口、变量作用域和参数传递)
一.接口 Java语言不允许一个子类拥有多个直接父类,即任何子类只能有一个直接父类.但允许一个类实现多个接口,即在定义类的接口名称列表中可以包含1个或多个接口名称,从而实现多重继承的特性.接口的定义格 ...
- Verilog学习笔记简单功能实现(七)...............接口设计(并行输入串行输出)
利用状态机实现比较复杂的接口设计: 这是一个将并行数据转换为串行输出的变换器,利用双向总线输出.这是由EEPROM读写器的缩减得到的,首先对I2C总线特征介绍: I2C总线(inter integra ...
- 深入struts2.0(七)--ActionInvocation接口以及3DefaultActionInvocation类
1.1.1 ActionInvocation类 ActionInvocation定义为一个接口.主要作用是表现action的运行状态.它拥有拦截器和action的实例.通过重复的运行inv ...
- 前端js调用七牛制作评价页面案例
一.需求 公司所有的上传页面都用七牛,前端不免要直接调用七牛的代码进行上传,以下是一个实现七牛上传的案例,制作一个常见的商品评价页面,页面需求很常见当上传到第五章图片的时候,上传按钮消失,上传需要显示 ...
- Effective Java 读书笔记之三 类和接口
一.使类和成员的可访问性最小化 1.尽可能地使每个类或者成员不被外界访问. 2.实例域决不能是共有的.包含公有可变域的类不是线程安全的. 3.除了公有静态final域的特殊情形之外,公有类都不应该包含 ...
- 【UEditor】远程上传图片到【七牛云存储】
杂谈:最近在玩一个第三方的微信开发平台,里面的图片都是上传到[七牛云存储]的,用了一下非常的好用,支持各种语言,SDK齐全.支持全分布式系统架构以及存储技术和数据加速,于是决定将网站的图片都存储到七牛 ...
- 接口(三)——JAVA的多重继承
一.接口的作用 ①.为了能够向上转型为多个基类型 ②.防止客户端程序员创建该类的对象——同抽象类 二.通过继承扩展接口 interface Monster{ void menace(); } inte ...
- 七牛php-sdk使用-文件上传
使用七牛进行文件上传可以有多种方式: 直接form表单上传,需要自己按照文档做配置 使用七牛jssdk,部署较简单,大文件分片上传 php-sdk后台上传 首先,所有的上传方法以及所有的跟七牛接口相关 ...
- golang面向对象和interface接口
一. golang面向对象介绍 1.golang也支持面向对象编程,但是和传统的面向对象编程有区别,并不是纯粹的面向对象语言.2.golang没有类(class),golang语言的结合体(struc ...
- Java开发知识之Java的继承多态跟接口*
Java开发知识之Java的继承多态跟接口 一丶继承 1.继承的写法 在Java中继承的 关键字是 extends 代表一个类继承另一个类. 继承的含义以及作用: 继承就是基于某个父类的扩展.制定出来 ...
随机推荐
- 一篇故事讲述了计算机网络里的基本概念:网关,DHCP,IP寻址,ARP欺骗,路由,DDOS等...
计算机主机网关的作用是什么? 假设你的名字叫小不点,你住在一个大院子里,你的邻居有很多小伙伴,在门口传达室还有个看大门的李大爷,李大爷就是你的网关.当你想跟院子里的某个小伙伴玩,只要你在院子里大喊一声 ...
- 详解SSH注解配置,bean注解、事物注解等
使用过SSH注解的屌丝们都知道,要想使用注解需要在applicationContext.xml配置文件里面开启注解配置,开启方式如下:1.头部声明需加入xmlns:context="http ...
- sql按照in中的顺序进行排序 mysql
经测试以下三种情况,都可以. SELECT a.id,a.name as goods_name,a.logoimg,b.name as store_name FROM sh_goods a LEFT ...
- shell command使用技巧
1窗口可以merge 2.可以通过 control+t打开窗口
- POJ-3204-Ikki's Story I - Road Reconstruction(最大流)
题意: 给一个有向图 求给那些边增加容量能增加总的流量,求边的条数 分析: 一开始求的是割边,结果wa了,那是因为有些割边增加了容量,但总的容量也不会增加 只有满流的边并且从源点汇点都有一条可扩展的路 ...
- LightOJ 1135(线段树)
题解引自:http://www.cnblogs.com/wuyiqi/archive/2012/05/27/2520642.html 题意: 有n个数,刚开始都为0 add i , j 给i,j区间内 ...
- HDU 1269 迷宫城堡 【强联通分量(模版题)】
知识讲解: 在代码里我们是围绕 low 和 dfn 来进行DFS,所以我们务必明白 low 和 dfn 是干什么的? 有什么用,这样才能掌握他. 1. dfn[] 遍历到这个点的时间 2. ...
- 高效算法——G - 贪心
G - 贪心 Time Limit:3000MS Memory Limit:0KB 64bit IO Format:%lld & %llu Submit Status Desc ...
- MVC4 中Remote的使用
相信当你看到这篇文章的时候对remote是有一些了解了, 起码知道这个东西是来干嘛用的. 这里也就不废话了 直接上代码 看看Remote的一些使用方式. 1.判断表单上输入的数据是否存在 [Syst ...
- 差别不在英语水平,而在汉语水平If you do not leave me, we will die together.
为什么高考语文要提高到180分,英语降到100,差别不在英语水平,而在汉语水平.看下面例句的译法: If you do not leave me, we will die together. 你如果不 ...