七、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 代表一个类继承另一个类. 继承的含义以及作用: 继承就是基于某个父类的扩展.制定出来 ...
随机推荐
- hdu 5072 Coprime
http://acm.hdu.edu.cn/showproblem.php?pid=5072 题意:给出 n 个互不相同的数,求满足以下条件的三元无序组的个数:要么两两互质要么两两不互质. 思路:根据 ...
- jsoup技术抓取网页数据大全
jsoupNews Bugs Discussion Download API Reference Cookbook jsoup ? Cookbook ? Extracting data ? 使用选择器 ...
- 【转】图说Android的8年演变史
原文网址:http://tech.gmw.cn/2016-02/17/content_18916338_14.htm 图说Android的8年演变史 我有话说 0 2011年10月谷歌 ...
- 动态规划(决策单调优化):BZOJ 4518 [Sdoi2016]征途
4518: [Sdoi2016]征途 Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 532 Solved: 337[Submit][Status][ ...
- 动态规划(斜率优化):BZOJ 1010 【HNOI2008】 玩具装箱
玩具装箱toy Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 8218 Solved: 3233[Submit] Description P 教授要去 ...
- SharePoint Server 2007 Enterprise Key
正式版 key SN: Tkjcb-3wkhk-2ty2t-qymk2-9xm2y 这个版本也是通过Key来区分是否是测试版还是正式版的 也就是说你输入正式版的Key他就是正式版,输入Enterpri ...
- supesite 相关 修改
1.修改 站点名称及logo http://faq.comsenz.com/viewnews-594 2.supesite 如何 收录论坛 http://faq.comsenz.com/viewnew ...
- vtk 中文显示
参考文章: http://www.vislab.cn/bbs/viewthread.php?tid=5079&page=1&extra=#pid19477 http://tieba.b ...
- 使用vs2010编译 Python \ SIP \ PyQt4
(1)先使用vs2010编译 Python http://www.cnblogs.com/fortwo/archive/2013/04/16/3023871.html 注意,若编译的为debug版的P ...
- 动态规划——I 记忆化搜索
Description Michael喜欢滑雪百这并不奇怪, 因为滑雪的确很刺激.可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待升降机来载你.Michael想知道 ...