| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3260 人关注过本帖, 1 人收藏
标题:初学者对C#中的接口有很多不理解请高手指教
只看楼主 加入收藏
sswin0922
Rank: 2
等 级:论坛游民
帖 子:25
专家分:10
注 册:2008-3-10
收藏(1)
 问题点数:0 回复次数:31 
初学者对C#中的接口有很多不理解请高手指教
刚开始学习c#,看到接口的时候看的云山雾照,很多地方不理解,1、接口在实际编程中有什么作用。2、接口和众多类它们之间有什么关系能干什么。
3、接口定义的参数我很晕
请高手结合一些实例详细讲解一下,让我能读读代码什么的?
万分感谢了!!
搜索更多相关主题的帖子: 接口 指教 定义 
2008-03-10 16:12
peach5460
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:武汉
等 级:贵宾
威 望:30
帖 子:2780
专家分:6060
注 册:2008-1-28
收藏
得分:0 
接口就是约束类的咯

我总觉得授人以鱼不如授人以渔...
可是总有些SB叫嚣着:要么给代码给答案,要么滚蛋...
虽然我知道不要跟SB一般见识,但是我真的没修炼到宠辱不惊...
2008-03-10 16:17
pacocai
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1583
专家分:0
注 册:2007-3-12
收藏
得分:0 
我觉得你这样来理解接口吧!接口事实上就是将对象间的共有特征方法和属性以抽象的形式集合到类中,封闭为一个特定集合,一旦类实现了接口,类就可以支持接口所指定的所有属性和成员。相等同于一个协议,这个协议是为了类与类之间相互更好通信。并类与类之间的交互尽量的使用接口来完成,估计这个时候你会问,我为什么非得要用接口来进行通信,我直接一个实例化不就搞定了,别急,我以前也是这样认为的。呵呵!迪米特法则中的核心思想是这样来描述的:如果两个类不必彼此直接通信,那么这两个类就不应当发生直接的相互作用。如果其中一个类需要调 用另一个类的某一个方法的话,可以通过第三者转发这个调用。以此来尽量降低成员的访问权限,这样也能更好的降低类与类之间的耦合程度,类之间的耦合越弱,则越有利于复用,一个处在弱耦合的类被修改,不会对有关系的类造成波及。                

浮生若梦天边月,醉死如酒水中星。红楼一梦千人叹,岂让万夫空做贱。博客:http://hi.baidu.com/rxvip
2008-03-10 16:29
pacocai
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1583
专家分:0
注 册:2007-3-12
收藏
得分:0 
接口使用的实例的话我在下面简单的说下,但是我不打算给详细的代码,因为要经过自己思考才是自己的东西。下面这个例程仅仅只是教你如何用接口,我认为没有实际的意义,如果真要学习接口的具体的用法请学习设计模式。

声明一个接口,在接口中会包含有一个抽象的方法。
public interface 接口名
{
     void 定义抽象方法();
}

class 继承接口的类1 : 接口名
{
    //具体的抽象方法
    定义抽象方法()
    {
        抽象内容
    }
}

class 继承接口的类2 : 接口名
{
    //具体的抽象方法
    定义抽象方法()
    {
        抽象内容
    }
}

public static void main (String[] args)
{
    继承接口的类1 类1 = 继续接口的类1();
    继承接口的类1.定义抽象方法();
    继承接口的类2 类2 = 继续接口的类2();
    继承接口的类2.定义抽象方法();
}

[[it] 本帖最后由 pacocai 于 2008-3-10 16:41 编辑 [/it]]

浮生若梦天边月,醉死如酒水中星。红楼一梦千人叹,岂让万夫空做贱。博客:http://hi.baidu.com/rxvip
2008-03-10 16:40
pacocai
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1583
专家分:0
注 册:2007-3-12
收藏
得分:0 
具体的应用我就用一个UML图来说明吧,感觉更为直观一些!
图片附件: 游客没有浏览图片的权限,请 登录注册

以上是一个uml图,如果在用户与各种模块之间再增加一个简单工厂的话,那么,用户与模块就完全的分开了,用户不需要再与类打交通,而是和工厂打交道,而工厂通过接口与各模块交互。比较简单的描述就这样来描述:你泡一个妹妹,带她到肯德鸡去,她只需要和服务员说我要两个鸡翅。然后服务员就会拿着单子找具体人员加工制作,做好以后把鸡翅拿给你泡的妹妹。也就是说你的妹妹不需要去了解具体的这鸡翅是怎样做成的,他也不需要先拿着一个生的鸡翅先找加工员A加工,再拿给加工员B加工。妹妹只需要和服务员打交道就可以了。

[[it] 本帖最后由 pacocai 于 2008-3-10 17:15 编辑 [/it]]

浮生若梦天边月,醉死如酒水中星。红楼一梦千人叹,岂让万夫空做贱。博客:http://hi.baidu.com/rxvip
2008-03-10 17:03
sunkaidong
Rank: 4
来 自:南京师范大学
等 级:贵宾
威 望:12
帖 子:4496
专家分:141
注 册:2006-12-28
收藏
得分:0 
interface   一般用来实现动态编连的...可以声明一个接口的引用,引用用子类实例初始他...可以动编....起到节约代码的目的....

学习需要安静。。海盗要重新来过。。
2008-03-10 17:12
pacocai
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1583
专家分:0
注 册:2007-3-12
收藏
得分:0 
接口大概就是这样了……我了解也不是很深刻,大家一起讨论吧。

[[it] 本帖最后由 pacocai 于 2008-3-10 17:15 编辑 [/it]]

浮生若梦天边月,醉死如酒水中星。红楼一梦千人叹,岂让万夫空做贱。博客:http://hi.baidu.com/rxvip
2008-03-10 17:12
pacocai
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1583
专家分:0
注 册:2007-3-12
收藏
得分:0 
[bo]以下是引用 [un]sunkaidong[/un] 在 2008-3-10 17:12 的发言:[/bo]

interface   一般用来实现动态编连的...可以声明一个接口的引用,引用用子类实例初始他...可以动编....起到节约代码的目的....


节省代码其实就是面向对象的可复用……但这仅仅只是接口的一个好处。更多的好处其实就是为了降低代码的耦合度。

浮生若梦天边月,醉死如酒水中星。红楼一梦千人叹,岂让万夫空做贱。博客:http://hi.baidu.com/rxvip
2008-03-10 17:14
sunkaidong
Rank: 4
来 自:南京师范大学
等 级:贵宾
威 望:12
帖 子:4496
专家分:141
注 册:2006-12-28
收藏
得分:0 
借下兄弟的例子
public interface 接口名
{
     void 定义抽象方法();
}

class 继承接口的类1 : 接口名
{
    //具体的抽象方法
    定义抽象方法()
    {
        抽象内容
    }
}

class 继承接口的类2 : 接口名
{
    //具体的抽象方法
    定义抽象方法()
    {
        抽象内容
    }
}

public static void main (String[] args)
{
    继承接口的类1 类1 = 继续接口的类1();
    继承接口的类1.定义抽象方法();
    继承接口的类2 类2 = 继续接口的类2();
    继承接口的类2.定义抽象方法();
    demo(类1);
    demo(类2);
}
static void demo(接口名 3)
{
    3.定义抽象方法();
}
呵呵...随便写了点..楼上兄弟说的很有道理....

[[it] 本帖最后由 sunkaidong 于 2008-3-10 17:18 编辑 [/it]]

学习需要安静。。海盗要重新来过。。
2008-03-10 17:16
pacocai
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1583
专家分:0
注 册:2007-3-12
收藏
得分:0 
哈哈!都用这种东东…………实际代码的实际让楼主自己去想,这样有助于加深印象。顶楼上的。

浮生若梦天边月,醉死如酒水中星。红楼一梦千人叹,岂让万夫空做贱。博客:http://hi.baidu.com/rxvip
2008-03-10 17:18
快速回复:初学者对C#中的接口有很多不理解请高手指教
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.013677 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved