社区
C#
帖子详情
接口作为函数参数的问题
drq6772
2008-06-09 11:11:15
请问:当接口作为函数参数的时候,代表什么意思?
...全文
360
7
打赏
收藏
接口作为函数参数的问题
请问:当接口作为函数参数的时候,代表什么意思?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
drq6772
2008-06-09
打赏
举报
回复
我可能是概念有点混乱,楼上的兄弟用 Icheckuser user,其中的user是接口Icheckuser的实例吗?接口不是不能实例化的吗?
wanghui0380
2008-06-09
打赏
举报
回复
没啥特别意思,任何对象都可以当参数
使用接口有可能是封装内部逻辑,让调用者并不用关心函数内部是如何实现的,这样做一是规范调用代码,而是减轻调用者理解业务逻辑的难度(实际上,使用接口你根本不用去关心人家内部是如何做的,传给他接口就成)
比如:传统的一个函数 checkuser(string name,string password);你调用时需要先知道这个函数让你传了两个参数
接口 Icheckuser
{
string name;
string passwrod;
}
内部逻辑: checkuser(接口icheckuser user)
{
if(user.name=="" && user.password=="")
{
//do something
}
}
当你在页面也继承该接口实现(页面和内部类都继承同一接口,这样可以保证程序员都使用同样的规范)
这样调用代码就可以规范成:
form :Icheckuser //继承并实现接口
string name{
get{return TextBox1.Text;}
set {TextBox1.Text=value;}
}
string password{
get{return TextBox2.Text;}
set {TextBox2.Text=value;}
}
checkuser((Icheckuser)this); //这里你不用管内部是如何的,你只管实现你自己该管的事情就行了
fuadam
2008-06-09
打赏
举报
回复
针对接口编程,封装了变化
lya121
2008-06-09
打赏
举报
回复
意义恨难说清。
接口做为参数传递 以及 接口作为返回类型 都是说的实现了这个接口的类的对象。
做多了就容易理解了。
amandag
2008-06-09
打赏
举报
回复
把接口作为函数的参数,那么任何实现了接口的类的实例都可以作为此函数的参数传递
wanghui0380
2008-06-09
打赏
举报
回复
Icheckuser user=(Icheckuser)this//这里不是new而是接口转换,this是在前面new的
interface(接口)
[attributes] [modifiers] interface identifier [:base-list] {interface-body}[;]
一个接口定义一个协定。实现接口的类或结构必须遵守其协定。接口可以从多个基接口继承,而类或结构可以实现多个接口。接口可以包含方法、属性、事件和索引器。接口本身不提供它所定义的成员的实现。接口只指定实现该接口的类或接口必须提供的成员。接口可以是命名空间或类的成员,并且可以包含下列成员的签名:方法属性 索引器.
一个接口可从一个或多个基接口继承。接口可由类实现。实现的接口的标识符出现在类的基列表中。被继承的接口称为该接口的显式基接口。当接口具有一个或多个显式基接口时,在该接口声明中,接口标识符后跟一个冒号以及由逗号分隔的基接口标识符列表。接口的基接口是显式基接口及其基接口。换言之,基接口集是显式基接口、它们的显式基接口(依此类推)的完全可传递的闭包。接口继承其基接口的所有成员。接口成员是通过 I.M 和 I[A] 形式的成员访问和索引访问表达式访问的,其中 I 是接口类型的实例,M 是该接口类型的方法、属性或事件,A 是索引器参数列表。接口可以由类和结构实现。为了指示类或结构实现接口,在该类或结构的基类列表中包含了接口标识符。在实现类或结构中定位接口成员的实现的过程称为接口映射。
fuadam
2008-06-09
打赏
举报
回复
比如你有个接口
interface IMove
{
void Move();
}
对于人,动物来说都可以Move所以
class Person : IMove
[
public void Move()
{
Console.WriteLine("Person move.");
}
}
class Animal: IMove
[
public void Move()
{
Console.WriteLine("Animal move.");
}
}
这是你可以这样调用IMove接口
public Test
{
public void Run(IMove obj)
{
obj.Move();
}
}
如果这是你的需求变了,比如又增加了Car类
class Car: IMove
[
public void Move()
{
Console.WriteLine("Car move.");
}
}
因为你是针对接口编程的,所以你不需要关心Car或者外星人或者火箭类,这既是面向对象的ocp原则,对修改关闭(针对Run方法)对扩展开发(针对新增的汽车,外星人,火箭类)
JAVA-函数式
接口
作为
函数参数
的用法-概念
有且仅有一个抽象方法的
接口
,称之为函数式
接口
一般可以作为方法的参数和返回值类型 <1>定义一个函数式
接口
package Demo35; @FunctionalInterface public interface Demo01MyFunctionalInterface { ...
函数式
接口
作为方法参数使用
package cn.dali5.code02; import java.sql.SQLOutput; /*函数式
接口
作为方法参数使用*/ public class Demo02 { public static void main(String[] args) { startThread(()->{ System.out.println(T...
C#
接口
-
接口
作为参数
C#
接口
-
接口
作为参数 厦门德仔
接口
作为参数和返回值,都是同样的作用,所有继承了这个
接口
的类,都可以使用。也就是说,你给这个方法传参数的时候,可以把继承了这个
接口
的类的实例传给这个方法,同样的道理,你...
java8 函数作为参数_JDK8新特性--常用函数
接口
--函数式
接口
作为方法的参数案例...
/*例如java.lang.Runnable
接口
就是一个函数式
接口
,假设有一个startThread方法使用该
接口
作为参数,那么就可以使用Lambda进行传参。这种情况其实和Thread类的构造方法参数为Runnable没有本质区别。*/public class ...
golang slice map struct 作为
函数参数
时的总结
1.map作为
函数参数
时是引用传递,操作的始终是同一个对象 2. slice作为
函数参数
时是引用传递。但是若函数内部对slice参数有append赋值时,则不再是同一个对象 3. struct作为
函数参数
时是值传递,但是struct内部若...
C#
111,097
社区成员
642,554
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章