真心求指教,抽象类和接口到底有什么用呢?

coffee_sugar 2012-04-27 10:42:47
为什么非要去定义这些东西啊?与其继承了这些东西然后再去实现他们,为什么不直接去实现这些想要的方法呢?
小白求大家指教啊~~~~
...全文
3474 66 打赏 收藏 转发到动态 举报
写回复
用AI写文章
66 条回复
切换为时间正序
请发表友善的回复…
发表回复
yujie_v 2012-05-08
  • 打赏
  • 举报
回复
一些概念的技巧和设计理念
hulp 2012-05-06
  • 打赏
  • 举报
回复
[Quote=引用 58 楼 的回复:]

应用和业务不复杂。你理解不了的。
[/Quote]
说道点子上了
ceofit 2012-05-05
  • 打赏
  • 举报
回复
你知道了继承,还不知道多态,理解一下多态就知道有什么好处了。
yzg100 2012-05-04
  • 打赏
  • 举报
回复
大话设计模式这本书推荐你看看。
zhouyang209117 2012-05-03
  • 打赏
  • 举报
回复
用不到就先不用管它。
2012-05-03
  • 打赏
  • 举报
回复
抽象类和接口都是为了代码的可扩展可维护。设计模式中有一个原则是开放封闭原则也提倡使用抽象。
z808089 2012-05-03
  • 打赏
  • 举报
回复
http://book.360buy.com/10064461.html

推荐你看看这本书。你会有所理解!
z808089 2012-05-03
  • 打赏
  • 举报
回复
应用和业务不复杂。你理解不了的。
饭饭000 2012-05-02
  • 打赏
  • 举报
回复
插座在定义的时候不是已经接电了吗,为什么使用的时候还要接电一次


[Quote=引用 9 楼 的回复:]
接口可以理解为标准
比如说 我们的插座 市面上所有的电器不是两孔就是三孔 不可能来个一孔或者四孔 这就是为了和插座兼容 这样子插座才可以给你供电 这里可以理解为外部针对接口的调用 但是具体这个电给你了你怎么用 那就是电器自身的事情 这里你就可以理解为实现了接口的类
用代码表示就是

C# code
public interface IChaKong//插孔接口
{
void En……
[/Quote]
SilveryBullet 2012-05-02
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 的回复:]
楼上很多人说了半天一会儿让lz看这个,一会儿让lz领悟那个,估计lz晕了。

其实没有那么高深,几句话就能说清楚。

问lz几个问题
(1)如果我写一个代码交给lz维护,你是愿意在我的代码中改来改去呢,还是直接再按照一定规则编写一段代码来扩展呢?
(2)如果lz是一个框架库的编写者(这听上去有点高级),你的用户不再是最终用户,而是一些初级程序员,你如何让他们觉得你的框架库好用。比如你的……
[/Quote]

内容质朴,不骄不躁,很喜欢这种回复风格~
coffee_sugar 2012-05-02
  • 打赏
  • 举报
回复
[Quote=引用 53 楼 的回复:]

其实他们主要还是在多态中使用
抽相是一类事物相同的部分,通用、稳定

你不要被继承这两个字的字面意思给误导了。继承其实大部门时候并不是去继承父类的具体功能。面向对象中不是常说“子类是一个父类“,其实只要知道子类是一个父类就行了,至与子类的功能,从某些角度来说,并不重要。

最完美的状态,父类最好是抽相类,而不是具体实现类

面向对象中不是有某些编程原则吗? 如 针对接口编程,依赖抽……
[/Quote]
谢大神帮助~
没想到会有这么多人回复所以早早的结贴了
“面向对象需要实现的是,代码可维护、可扩展、可复用、灵活性。”
这句话我以前确实没有考虑过- -
挨踢直男 2012-05-02
  • 打赏
  • 举报
回复
其实他们主要还是在多态中使用
抽相是一类事物相同的部分,通用、稳定

你不要被继承这两个字的字面意思给误导了。继承其实大部门时候并不是去继承父类的具体功能。面向对象中不是常说“子类是一个父类“,其实只要知道子类是一个父类就行了,至与子类的功能,从某些角度来说,并不重要。

最完美的状态,父类最好是抽相类,而不是具体实现类

面向对象中不是有某些编程原则吗? 如 针对接口编程,依赖抽相不依赖具体类等。
其实面向对象要达到的目的并不是说实现如何如何的功能,要实现如何如何的功能,面向过程程序设计也可以实现

面向对象需要实现的是,代码可维护、可扩展、可复用、灵活性。而要实现这几点,接口、抽相是必须的。你可以找些书系统的学一下,如设计模式、重构等
intel286 2012-05-01
  • 打赏
  • 举报
回复
本人理解goto = jmp
yufei_yuxuan 2012-05-01
  • 打赏
  • 举报
回复
看的再多,听的再多,解释的再多,意义不大,因为这样是不会真的明白他的用途的,根据我的经验,我建议去弄一些优秀的代码读,几十万的代码量总是要有的,然后有点感觉了,就仿着写,然后用接口就成了习惯了,感觉设计模式,看很容易,真的要运用是很难的,估计也不是看一遍就能明白接口是做什么的,而且设计模式也不是为什么接口而存在的
xiaotanyu13 2012-04-30
  • 打赏
  • 举报
回复
等你编多了 就会有 耦合和内聚的概念 等你写的项目变大的时候 你就会发现这些问题,
mrxindong 2012-04-30
  • 打赏
  • 举报
回复
看贴一遍,学到经验。
看帖回复,早日醒悟。
溪源More 2012-04-29
  • 打赏
  • 举报
回复
接口就是一种契约,凡是实现了这种契约的对象均将具备接口的特性。
抽象类,则是为了方便开发,而额外定义的非接口对象,这种对象可以视为一个父类,如果一个子类需要调用的方法恰好包含在父类中,只需从父类进行派生,就自动具备了这些方法。
五大人 2012-04-29
  • 打赏
  • 举报
回复
小白看帖学经验、、
TianMaiCheng 2012-04-28
  • 打赏
  • 举报
回复
这么多人一个好一点,形象一点的合理的解释都没有!!!


楼主,接口,这个 概念其实是为了标准,


不知道你做过网页没有……

像<html>,<a></a>这样的标签,每个浏览器都要支持它,你要问为什么要支持它,因为好多程序员都要调用它!!

很多程序员都被灌输这样的概念,比如说看到<a href='www.baidu.com'>百度</a> 就知道这是一个链接到百度的超链!!还比如说:JS函数 document.getElementById("myid");这句话;浏览器的制造厂商要让程序员调用它的时候会产生“得到ID为‘myid’的标签的值”的这种效果!!具体它是怎么实现的,我们不知道!!我们调用的时候,只管它产生的后果!!!

那些浏览器厂商,像微软,谷歌,苹果,还有像什么搜狗,腾讯的都要让“程序员”在调用这些“接口”的同时都要产生一致的效果!!!这就是接口的作用!!!


其实吧!!像C# 的语吧吧!!你为啥要这样子写呢!!因为这是个标准!!你要是写错了,编译器就不认识你!!

可能你一直用一些像VS,esclipse这样的智能工具,所以你就漠视了这些概念!!


说白了!!接口是啥,接口就是:能让别人调用,并会产生一致性效果的东西!!!像C#,Java里的那些关键字,系统函数啥的都可以称为“接口”!!

接口只是为了一致性的东西!!!

你不要认为它很神性!!

它就是抽象出的一种概念而己!!!

广州接入 2012-04-28
  • 打赏
  • 举报
回复
抽象类和接口其实都是必要的,他们的应用场景不同,抽象类的作用一是规范同类调用接口,二是代码复用,而接口的作用是规范不同类之间的调用接口(虽然抽象类允许多继承的情况下,也可以起到类似作用,但抽象类也是类,是具有分类学意义的,而且由于有代码,因此抽象类会重很多,而且逻辑过于复杂),接口没有分类学的意义,所以也没有代码复用的职责(接口虽然一样,但实现可以千差万别).也正因为接口没有代码实现(因为实现代码都在实现接口的类上面),所以会轻很多,而且在多接口实现逻辑上也非常简单,不用考虑复杂的层次调用逻辑.虽然接口可以退化成一类对象的规范,跟没有实现代码抽象类作用一样,但这也只是一种非常特殊的情况,除此之外,抽象类和接口的应用范畴是有很大区别的.所以需要分清各自的应用场景和目的,接口泛滥和抽象类泛滥都是需要避免的.
加载更多回复(43)

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧