七、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 代表一个类继承另一个类. 继承的含义以及作用: 继承就是基于某个父类的扩展.制定出来 ...
随机推荐
- 启明星辰:安全管理平台(SOC)
泰 合信息安全运营中心(Security Operation Center)系统是一个以IT资产为基础,以业务信息系统为核心,以客户体验为指引,从监控.审计.风险.运维四个维度建立起来的一套可度量的统 ...
- HttpWebRequest.GetResponse() raises exception when http status code 400 (bad request) is returned
参考: .Net HttpWebRequest.GetResponse() raises exception when http status code 400 (bad request) is re ...
- logstash 处理各种时间格式
tomcat access日志: { "@version" => "1", "@timestamp" => "2016 ...
- C# 绘图对象 流对象 响应对象关系
- 并查集(逆序处理):HDU 5652 India and China Origins
India and China Origins Time Limit: 2000/2000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/ ...
- 关于TCP的粘包和拆包
问题产生 一个完整的业务可能会被TCP拆分成多个包进行发送,也有可能把多个小的包封装成一个大的数据包发送,这个就是TCP的拆包和封包问题. 下面可以看一张图,是客户端向服务端发送包: 1. 第一种情况 ...
- 使用python进行接口测试
最近在做接口测试,之前公司的方案是使用postman进行接口测试.但是伟大的墙导致我们只能用离线版postman..然后一个很长很长的接口列表,一个接一个的访问.我的天哪..所以萌生了一个想法,使用p ...
- greenplum和postgresql
想着要不要写,两个原因"懒"和"空".其实懒和空也是有联系的,不是因为懒的写,而是因为对PostgreSQL和Npgsql的知识了解匮乏,也就懒得写.好了,开头 ...
- 总结的一些封装好的javascript函数
平时总结的一些常用javascript函数封装: //获取样式 function getStyle(obj,name){ if(obj.currentStyle){ return obj.curren ...
- string和stringbuffer stringbuilder的快速理解。
这三个对象都可操作字符串,区别string定义的变量除非重新赋值,否则是不可改变的.调用string的方法不会改变,但是其他两个有对象的方法可改变,比如apend的方法,后两个区别一个是线程安全不安全 ...