C#中接口怎么使用?要详细答案

 我来答
匿名用户
2013-08-24
展开全部
using System;

/// <summary>

/// 创建一个获取字符串数据的接口

/// </summary>

///

interface IGetData
{
//接口定义,不使用修饰符

string GetText();
void SetText(string str);
string Content { get;set;}
}
//创建一个获取整数的接口

interface IGetInt
{
int GetInt();
void SetInt(int num);
int Integer { get;set;}
}
//接口的继承

interface IGetDataExt : IGetData
{
string CopySelf();
}
//实现一个接口

public class Data : IGetData
{
//实现GetText成员函数

public string GetText()
{
return content;
}
//实现SetText成员函数

public void SetText(string str)
{
content = str;
}
//实现Content属性,指定为public

public string Content
{
get
{
return content;
}
set
{
content = value;
}
}
private string content;
};

//实现两个接口

public class StringInt : IGetData, IGetInt
{
//实现GetText成员函数

public string GetText()
{
return content;
}
//实现SetText成员函数

public void SetText(string str)
{
content = str;
}
//实现Content属性,指定为public

public string Content
{
get
{
return content;
}
set
{
content = value;
}
}

//实现GetInt

public int GetInt()
{
return integer;
}
//实现SetInt

public void SetInt(int num)
{
integer = num;
}
//实现Integer属性

public int Integer
{
set
{
integer = value;
}
get
{
return integer;
}
}
private int integer;
private string content;
}

//实现继承的接口 

public class DataExt : IGetDataExt
{
//实现GetText成员函数

public string GetText()
{
return content;
}
//实现SetText成员函数

public void SetText(string str)
{
content = str;
}
//实现Content属性,指定为public

public string Content
{
get
{
return content;
}
set
{
content = value;
}
}
public string CopySelf()
{
return content + content;
}
private string content;
}

//override接口的方法
public class VirtualData : IGetData
{
//定义为一个虚方法

public virtual void SetText(string str)
{
Console.WriteLine("VirtualData.SetText");
content = str;

}
//非虚方法

public string GetText()
{
Console.WriteLine("Virtual.GetText");
return content;
}
public string Content
{
get
{
return content;
}
set
{
content = value;
}
}
private string content;
}
//override类实现
public class OverrideData : VirtualData
{
//override类的virtual方法
public override void SetText(string str)
{
Console.WriteLine("Override.SetText");
content = str;
}
//非virtual的方法
public new string GetText()
{
Console.WriteLine("Override.GetText");
return content;
}
private string content;
}

public class CallData
{
//Data的测试类

public static void test()
{
//测试一个接口的字符串接口

Data data = new Data();
data.SetText("SetText");
Console.WriteLine(data.GetText());
data.Content = "Content";
Console.WriteLine(data.Content);

//测试两个接口的接口 

StringInt si = new StringInt();
si.SetText("StringInt.SetText");
si.SetInt(100);
Console.WriteLine("{0},{1}", si.GetText(), si.GetInt());

si.Content = "StrigInt.Content";
si.Integer = 200;
Console.WriteLine("{0},{1}", si.GetText(), si.GetInt());

//测试继承接口

DataExt de = new DataExt();
de.SetText("DataExt.SetText");
de.CopySelf();
Console.WriteLine(de.Content);

//接口的强制转化
StringInt SICast = new StringInt();
SICast.SetText("SICast.SetText");
SICast.SetInt(300);
IGetData DataCast = (IGetData)SICast;
Console.WriteLine(DataCast.Content);

IGetInt IntCast = (IGetInt)SICast;
Console.WriteLine(IntCast.Integer);
//is关键字的使用
if (SICast is IGetData)
Console.WriteLine("Implemented from IGetData,{0}",SICast.GetText());
else
Console.WriteLine("SICast is not implemented from IGetData");
//as关键字的使用
IGetData DataAS = SICast as IGetData;
if (DataAS != null)
Console.WriteLine("Implemented from IGetData,{0}", SICast.GetText());
else
Console.WriteLine("SICast is not implemented from IGetData");
//override与new在类中的使用
IGetData vd = new OverrideData();
//调用Override.SetText
vd.SetText("VirtualData.SetText");
//调用Virtual.Get
vd.GetText();
OverrideData od = new OverrideData();
//调用Override.SetText
od.SetText("OverrideData.SetText");
//调用Override.GetText
od.GetText();
}
}; 参考: http://hi.baidu.com/ndlli/blog/item/ced92508311bf2d663d986fe.html
匿名用户
2013-08-24
展开全部
在C#中用关键字interface来进行申明,关键字后面是接口的名字。它的定义和类的定义相似。其成员可以是方法,属性,和索引函数,不能有字段和构造函数。比如public interface student{string name;//成员前面不能接public ,private等有关权限的关键字。bool sex;int GetAge(){};}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-08-24
展开全部
要学习C# 程序设计, 可以咨询龙腾IT教育 官方网站。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
cdscdsfafds
2021-05-08
知道答主
回答量:15
采纳率:0%
帮助的人:1831
展开全部
本来不想说的。但是想想当初自己也是这样迷茫着过来的,你们到处百度的样子像极了当初的我。已经做开发七八年了,很多当初不懂的概念现在也玩的6了起来。给你们说,大部分人是不会回答这样的问题的,因为太简单。所以国内开发很多新人成长很简单。
言归正传,接口。。。。这个东西不能单纯的用interface说事,因为接口本身就是一个概念和实际应用的双重概念。为什么这么说?
技术上,interface,接口的关键字,你可以很容易的百度到接口如何定义呀,如何继承呀,什么能包含这样的成员,不能包含那样的方法实体呀,其实这些作为一个新人,需要自己去学习的。我要说的是接口的应用场景。两种!
一种,也就是上面说的,技术定义的接口,这种接口主要作用就是为了规范开发,更深一点应该就是封装的时候进行一个代码保密保护。
第二种,这个属于实际应用中的“接口”,就像你知道的电插头,和插板对接,才有电,程序也是这样,我写接口,做成成api,webservice,发布之后你来调用,具体的调用方式,可以学习webapi,webservice,这是两种服务架构,可以说,脱离了他俩,接口没有任何意义,如果有,那就是面试需要。具体的调用区别这里点一下,webapi,相比webservice,轻量级,传递值类型丰富,另一个service单一了,只能是xml.至于接受,转换json,转换实体,这个随意。
调用方式,其实会了ajax,你也就知道一切了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式