什么是C#中接口,最好有个例子。
答案:4 悬赏:50
解决时间 2021-01-09 19:29
- 提问者网友:留有余香
- 2021-01-09 16:14
什么是C#中接口,最好有个例子。
最佳答案
- 二级知识专家网友:蓝房子
- 2021-01-09 16:50
interface IPrint {
void Print();
}
class A : IPrint {
public void Print() {
System.Console.WriteLine("A");
}
}
class B : IPrint {
public void Print() {
System.Console.WriteLine("B");
}
}
class AppMain {
public static void Print(IPrint obj) {
obj.Print();
}
public static void Main() {
Print(new A()); // display A
Print(new B()); // display B
}
}
在这个例子中,IPrint 接口中定义了Print方法,但没有实现方法体.
类A和类B都继承了IPrint接口,并且实现了不同的Print方法.
在AppMain 中调用A\B,获得不同的打印结果
void Print();
}
class A : IPrint {
public void Print() {
System.Console.WriteLine("A");
}
}
class B : IPrint {
public void Print() {
System.Console.WriteLine("B");
}
}
class AppMain {
public static void Print(IPrint obj) {
obj.Print();
}
public static void Main() {
Print(new A()); // display A
Print(new B()); // display B
}
}
在这个例子中,IPrint 接口中定义了Print方法,但没有实现方法体.
类A和类B都继承了IPrint接口,并且实现了不同的Print方法.
在AppMain 中调用A\B,获得不同的打印结果
全部回答
- 1楼网友:由着我着迷
- 2021-01-09 20:36
///
/// 创建
///
public interface IOperator
{
string Create(ReportPara Entity, string strExcelPath, string strXmlPath);
}
理论楼上的都说了。这个就是个借口的例子,实现这个借口的类,要实现Create方法
/// 创建
///
public interface IOperator
{
string Create(ReportPara Entity, string strExcelPath, string strXmlPath);
}
理论楼上的都说了。这个就是个借口的例子,实现这个借口的类,要实现Create方法
- 2楼网友:杯酒困英雄
- 2021-01-09 19:03
接口的实现分为:隐式实现和显式实现。如果类或者结构要实现的是单个接口,可以使用隐式实现,如果类或者结构继承了多个接口那么接口中相同名称成员就要显式实现。显示实现是通过使用接口的完全限定名来实现接口成员的。
使用显式接口成员执行体通常有两个目的:
1、因为显式接口成员执行体不能通过类的实例进行访问,这就可以从公有接口中把接口的实现部分单独分离开。如果一个类只在内部使用该接口,而类的使用者不会直接使用到该接口,这种显式接口成员执行体就可以起到作用。
2、显式接口成员执行体避免了接口成员之间因为同名而发生混淆。如果一个类希望对名称和返回类型相同的接口成员采用不同的实现方式,这就必须要使用到显式接口成员执行体。如果没有显式接口成员执行体,那么对于名称和返回类型不同的接口成员,类也无法进行实现。
使用显式接口成员执行体通常有两个目的:
1、因为显式接口成员执行体不能通过类的实例进行访问,这就可以从公有接口中把接口的实现部分单独分离开。如果一个类只在内部使用该接口,而类的使用者不会直接使用到该接口,这种显式接口成员执行体就可以起到作用。
2、显式接口成员执行体避免了接口成员之间因为同名而发生混淆。如果一个类希望对名称和返回类型相同的接口成员采用不同的实现方式,这就必须要使用到显式接口成员执行体。如果没有显式接口成员执行体,那么对于名称和返回类型不同的接口成员,类也无法进行实现。
- 3楼网友:迟山
- 2021-01-09 18:22
这是一个规范和思维习惯问题。接口是程序对功能不同,但使用方法相同的类的概括和定义,如果你的很多类要继承同一个接口,但又经常都不需要实现所有这个接口的所有方法或者属性,那就是你的接口设计的有问题。举个例子:
比如, "手动档轿车" 这个接口,它需要有以下几个方法就能开走:方向盘、油门、刹车、排档、离合器 。 奔驰,宝马,兰博基尼,法拉利,奥迪,悍马 这几个具体的车型相当于"类",它们都继承"手动档轿车",我会开手动档轿车,那么这些实现 "手动档轿车" 接口的随便一辆车拿给我,我都能开走。 但是你造了那么一辆车,它没有刹车、没有排档、没有离合器,然后告诉我这是一辆"手动档轿车"(继承"手动档轿车" 接口) , 我拿去,是能开走,但是一旦想停车、换档,才发现没有这几个设备(方法,属性),后果是什么? 没人规定你造的这个车不能叫"手动档轿车",但很显然别人要用开手动档轿车的方法来开你这个车,十有八九会出事故。所以,编译器规定你继承了一个接口,你就必须实现它的所有成员,就像规定你造"手动档轿车",必须把方向盘、油门、刹车、排档、离合器全部装全才行。
比如, "手动档轿车" 这个接口,它需要有以下几个方法就能开走:方向盘、油门、刹车、排档、离合器 。 奔驰,宝马,兰博基尼,法拉利,奥迪,悍马 这几个具体的车型相当于"类",它们都继承"手动档轿车",我会开手动档轿车,那么这些实现 "手动档轿车" 接口的随便一辆车拿给我,我都能开走。 但是你造了那么一辆车,它没有刹车、没有排档、没有离合器,然后告诉我这是一辆"手动档轿车"(继承"手动档轿车" 接口) , 我拿去,是能开走,但是一旦想停车、换档,才发现没有这几个设备(方法,属性),后果是什么? 没人规定你造的这个车不能叫"手动档轿车",但很显然别人要用开手动档轿车的方法来开你这个车,十有八九会出事故。所以,编译器规定你继承了一个接口,你就必须实现它的所有成员,就像规定你造"手动档轿车",必须把方向盘、油门、刹车、排档、离合器全部装全才行。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯