惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Microsoft Azure Blog
Microsoft Azure Blog
Google Online Security Blog
Google Online Security Blog
D
Darknet – Hacking Tools, Hacker News & Cyber Security
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Simon Willison's Weblog
Simon Willison's Weblog
T
Threat Research - Cisco Blogs
C
CXSECURITY Database RSS Feed - CXSecurity.com
L
Lohrmann on Cybersecurity
www.infosecurity-magazine.com
www.infosecurity-magazine.com
Forbes - Security
Forbes - Security
P
Palo Alto Networks Blog
Schneier on Security
Schneier on Security
S
Schneier on Security
T
Tor Project blog
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
WordPress大学
WordPress大学
The Hacker News
The Hacker News
Hacker News - Newest:
Hacker News - Newest: "LLM"
罗磊的独立博客
Application and Cybersecurity Blog
Application and Cybersecurity Blog
F
Fortinet All Blogs
博客园 - 三生石上(FineUI控件)
小众软件
小众软件
C
Check Point Blog
Stack Overflow Blog
Stack Overflow Blog
Blog — PlanetScale
Blog — PlanetScale
雷峰网
雷峰网
S
Security @ Cisco Blogs
PCI Perspectives
PCI Perspectives
Spread Privacy
Spread Privacy
W
WeLiveSecurity
SecWiki News
SecWiki News
A
About on SuperTechFans
H
Help Net Security
博客园 - 司徒正美
Recent Commits to openclaw:main
Recent Commits to openclaw:main
爱范儿
爱范儿
S
Securelist
M
MIT News - Artificial intelligence
云风的 BLOG
云风的 BLOG
月光博客
月光博客
Jina AI
Jina AI
博客园 - 叶小钗
Vercel News
Vercel News
阮一峰的网络日志
阮一峰的网络日志
Recent Announcements
Recent Announcements
S
Secure Thoughts
The Cloudflare Blog
美团技术团队
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More

博客园 - 蝗虫的大腿

IOS UITest 初始化 ViewController wp8.1 sdk preview 预览版 windows phone 网络开发三部曲(一)各种包的各种抓法 Windows phone UI虚拟化和数据虚拟化(二) Windows phone UI虚拟化和数据虚拟化(一) LongListSelector 控件 在 wp7 和wp8中的不同之处 wp8 longlistselector 动态加载datatemplate windows phone 设计时 数据源 xna 触控操作 备忘 windows phone 在代码中生成ApplicationBar WP8多分辨率解决方案 wp8 模拟器启动失败的解决方法。 Xap 包装失败。未将对象引用设置到对象的实例。 解决办法 wp7 中Panorama控件 title 字体大小 样式的设置 不同服务器数据库之间的数据操作 jquery UI dialog 和 asp.net 控件 出错 失效 - 蝗虫的大腿 在sql server 中执行带参数的存储过程及计算运行时间 http错误列表 常用的js正则表达式 - 蝗虫的大腿 - 博客园
对于 抽象类 接口 的理解
蝗虫的大腿 · 2008-01-11 · via 博客园 - 蝗虫的大腿

1. 一个子类implements一个接口,如果该子类是非abstract类,就必须实现接口中的所有方法(不管是否需要);而如果该子类是abstract类

,则可以实现接口的中方法也可以不实现。
   一个子类如果是继承一个抽象类,如果该子类是非abstract类,就必须实现基类中的所有抽象方法;而如果该子类是abstract类,则可以实

现基类的中抽象方法也可以不实现。
   //这两种情况看起来是一样的,只不过,抽象类中可以有非抽象方法,而接口中必须全是抽象方法。

2. 如果一个接口中定义的方法名改变了,那么所有实现此接口的子类显然将无法通过编译,因为接口的那个改名的方法在非抽象子类中没有实

现。
   抽象类如果修改了一个抽象方法的名称,子类同样编译不过,但若修改的是非抽象方法,编译没有问题。
   //两者看起来看是差不多的,只不过修改的方法有抽象和非抽象之别。

3. 关于
   抽象类如果修改了一个抽象方法的名称,子类同样编译不过,如果修改的是非抽象方法,编译没有问题,这个不确定性恰恰是抽象类的致命

弱点。

--------------------------------

   怎么会无法通过呢?初始名为aaa ,子类继承来了aaa的方法,当抽象类的aaa改为bbb后,子类就拥有了aaa,和bbb两个方法

   //初始名为aaa(应为抽象方法名),子类继承(并实现)了aaa的方法,当抽象类的aaa改为bbb后,子类就拥有了aaa,和bbb两个方法(子

类这时只是拥有了一个新方法aaa,而抽象类的的抽象方法bbb在子类中没有实现,当然无法编译通过)
----------------------------------------
我发现大家对接口的理解太过片面了,接口可以这样理解:它并不仅仅是一个类,它是一个规范~~~

就象是一个系统,不断有旧的成员被新的成员取代,但系统仍然可以良好运转,为什么?就是因为所以的成员都遵守一个让系统正常运行的规范,在软件中,接口就扮演着这样一个角色,它并没有代替成员做具体的工作(coding)而是告诉成员该如何做(接口中的方法)

再详细一些说就是接口中的方法只定义了参数类型,返回值类型,方法名字,就是告诉成员用什么样的工具(方法名)用什么资源(参数类型)完成什么样的工作(返回值类型)

基于这样的出发点,几个毫不相干的抽象类甚至可以公用一个接口,即接口规范着抽象类

这就是接口最主要的作用,通过接口耦合的系统有更好的整体性和可维护性,可扩展性
-----------------------------------------
但是接口会在无形中至少增加一个类,如果再加上一个抽象隔离的话,就多出来两个。如果其他人也理解这种模式还凑合,如果其他人不理解呢?那就大幅度的增加了类结构图的复杂度(系统初期一般类的数量本来是不多的)。
----------------------------------------
以为使用接口和抽象类会减少代码量就是另外一个误区

一个依赖抽象层的系统在开发过程中,难免会在抽象层和实现层中改来改去,工作量甚至会成倍的增加
这样的系统在后期的维护与再次开发中的好处却是明显的,要做的改动会少很多也会更容易些,很多人都有这样的经验:当为某个程序加上一个功能的时候,突然间发现其他的某个功能不好使了,如果一个抽象层设计良好的系统是不会出现这样的情况的,但这就要取决与设计抽象层之前对可能发生情况的预测是否全面,否则既改接口又改代码无疑是一场噩梦,这是设计者经验多寡的问题。

这些都是我目前对接口的理解,让我具体举一些例子我也举不出来,只可意会不可言传,大家可以记住我说的这些在以后做项目的过程中体会一下
---------------------------------
其实我个人认为,我们在进行OO设计的时候,我们分析得越细致就越提高了我们代码使用的精密性。这时候,我们必须对所有的框架有个详细了解才能开始。这是一种很不好的用户体验。
--------------------------------
大部分新人很难做到理论指导实践的,所以对于新人来说,想用什么就用什么好了。。。保证程序能转就行。等到实践多了,觉得这样写程序开始难受了,自然就会去思考为什么会难受。。如果一直都不觉得难受,也就这样了。。