java 板


LINE

介面第一个功能, 大家都说是可避免多重继承,那麽首先要回答,为何多重继承在Java是必须避免的呢? 若是现有A、B、C三个类别,然後这三个类别关系是:C is a A;C is also a B。 那麽万一A、B类别有一模一样名称的方法,C类别要继承的是哪个方法呢?? 这样就不能确定了,所以这是Java必须避免多重继承的原因。 而又为何介面可以避免掉多重继承这个问题呢?介面不是可以被多重实作,万一某类别 多重实作不同介面,而不同介面又有相同名称的方法呢?? 不同介面若有相同名称的方法,在Java中会被当作是拥有相同功能、行为之方法。 因为介面内定义的方法,本来就是用一种名称去对应一种行为的, 例如swim就只会是游泳,不会是别的行为;run就只会是跑,不会是别的行为; attack就只会是攻击,也不会是别的行为。 既然这样,若不同介面拥有相同名称之方法,那就会被Java认为是相同的方法,既然方法都一样,那类别实作介面的方法时,实作一个就好了,因为都是一样的方法。 所以,若是多重实作介面的类别遇到需实作相同名称之方法,实作其中一个方法即可。 因此,介面透过这个「相同名称就是相同行为,实作一遍就好」的方式,避开了 多重继承会出现的问题,也就是说介面确实是可以取代多重继承的。 ----------------------------------------------------------- 介面的第二个功能,是详开规格书。最着名的例子就是JDBC API与Servlet API。 Java官方利用介面去规定以上的API必须实作那些功能,各家资料库与Web container厂商 实作後,将实作後的结果打包成jar档,jar档被使用者使用,可以直接透过 事先规定之介面,也就是JDBC、Servlet API, 来使用各家资料库与Web container厂商实作之结果。 也就是说使用者使用相同/一种的API,即可使用多种不同的资料库与Web container。 ---------------------------------------------------------------- 介面的第三个功能,是贴标签,着名的例子是runnable介面跟serialize介面。 透过对类别贴上这样的标签,即可给这些类别增加特殊功能。 ------------------------------------------------------------- 介面的第四个功能,是提供多型。 因为介面型别的reference,与实作该介面的类别之物件,两者关系是 该类别物件拥有该介面所定义的行为。因此该reference可以直接指向该物件。 也就实现了多型的效果。而多型又可以大幅降低程式的复杂程度。 ------------------------------------------------------------- 介面的第五个功能,是降低程式相依性,进而好维护。 因为类别是依赖於介面而非依赖於实作後的类别,如果类别是依赖於某个实作的类别, 万一被依赖的类别有所修改,依赖的类别很可能也会跟着被变化。这样 一个类别被改动,其他类别也要因此做出改变,要改变很多类别,程式就不易维护, 若类别是依赖於介面,因为介面本身并不含实际的code,因此 修改介面并不会直接造成类别被变化,也就能降低程式相依性,进而好维护。 ---------------------------------------------------- 总结之上讨论,介面共有五个功能, 而这也是介面之所以在Java专案架构中十分重要之原因。 --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 101.12.22.85 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/java/M.1682946959.A.916.html
1F:推 Isaea: 推,讲解的很透彻 05/03 00:38
2F:推 Hsieh455125: 推优文 05/04 13:22
3F:推 andytung444: 推,写得很容易懂 05/16 19:52
4F:推 ywk: 好文推 05/29 06:51
5F:推 xrururururu: 好奇问 第一项 多重继承取不同方法名字不就可以避免 06/06 15:16
6F:→ xrururururu: ? 06/06 15:16
7F:推 Jichang: 多重继承的意思是 你想要 爸爸的功能 也要妈妈的功能 jav 06/14 12:15
8F:→ Jichang: a 无同时继承两个 但是可以用介面搭配 Delegation 来实现 06/14 12:15
9F:推 chyl13579: 好文堆堆 09/24 13:20
10F:推 goodice: 好文 10/08 23:01
11F:推 chyl13579: 推 12/03 08:15







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:iOS站内搜寻

TOP