java 板


LINE

※ 引述《kazenol (随便啦)》之铭言: : 我找了很多资料,大致上了解的是,介面是为了解决单一继承的问题、或是规范 : 出继承者必须做出介面预定的规则。 : 继承我大概了解,子类别继承之後可以使用父类别的函式与变数。可是继承介面 : 有什麽好处?如果这个介面规定要做一个jump,但是继承後jump也不能用,要去 : 写一个实际jump的方法。那我直接继承其他类别,也是可以定义jump func,为什 : 麽要绕一圈去继承一个没有内容、只写个名字的类别呢? 因为在物件导向的程式撰写里,我们常利用基类别或介面的变数去操作 另一个实际存在的子类别或介面实作者。但是有时候那个基类别其实不 需要做太多事情,也就是说,可能只有很少很少的 public method, 甚至是只有一个,更有甚者,这个实际存在的子类别或介面实作者, 他可能已经继承自另一个基类别了。这时候如果我们没有 interface 这个东西的话,就势必得用多重继承了。而多重继承在物件导向中是个 争议一直很大的东西…。也就是说 Java 利用了 interface 的机制来 解决我们对於多重继承的需求。 : 我看过一个例子,有个父class很会运动,母class很会唱歌。但是小孩子只能继承 : 父或母而变得不完美。所以定义一个介面包含会唱歌和会运动的抽象函式,然後由 : 小孩去实作,这样就算多重继承。可是第一,父类别的会运动是会讲明怎麽个运动 : 法,但是介面的“会运动“,就这三个字而已,没有说明也没有方式。第二,这个 : 介面的会运动和会唱歌除了名称以外,跟这对父母类别有关连吗?? 而且其他实作 : 这个介面的其他小孩,他们的会唱歌和会运动函式会写的一样吗? 这是个不好的例子…因为看不出来这样做的用意是什麽。就拿我前几天 在试的东西举例好了。假设我们要写一个泛型排序法,所谓泛型排序法 就是对任何有排序准则的东西做排序。那麽我们该怎麽知道所传进来的 物件具有比较能力?以下是乱写的 Java code, 不一定能跑,只是为了 呈现概念。 void sort(Comparable[] input){ if( input[0].compareTo( input[1] ) == 1 ); } 好吧,这完全不能跑 XD 我们没办法得知各种物件间需要用什麽方法来比较大小。比方说二个 个人资料,我们应该怎麽去比较他们之间的顺序?是看名字呢,还是 看编号?也就是说,我们完全没有必要去规范 compareTo 应该怎麽 实作。更有甚者,因为 Java 没有多重继承,如果你让你的物件去 继承了 Comparable, 那你原先物件的继承体系怎麽办?重写?摆烂? 然後你这一段最後一句提到其他小孩的唱歌运动是否会跟原本的一样。 基本上假使你用到了动态多形机制,意思就是你不要求他们的唱歌运动 是否一样了。所以这根本不是问题,反而是原则。动态多形就是要每个 不同的物件间行为不同而诞生的。而这个行为虽然各自不同,却有着相 同的意义。比方说你要所有的小孩表达快乐,那麽有的小孩可能是唱歌, 有的可能是运动(好啦这是很怪啦),不管他用什麽方法表达,你的命令 就只是要求他表达快乐,而这也只是你想要的。反之,就不是动态多形 要做的事,设计方向错误。 : 不好意思扯了一堆,因为我一直看不懂介面所以放弃java,没想到又在php遇上 : ,只好求各位帮我解惑。谢谢! 不懂介面的话会有很多问题喔 @_@ 不过我个人认为多重继承还是有必要的… Java 的介面并没有完全解决 问题。至於其他的语言对於多重继承的解法,就我所知还有 mixin, D 语言和 Ruby 就是以 mixin 来解决的。但不要问我 mixin 是啥, 还没研究过 XD 顺便一提,就我所知有多重继承的是 C++ 和 Common Lisp, 其他有点忘了 -- Nobody can take anything away from him. Nor can anyone give anything to him. What came from the sea, has returned to the sea. Chrono Cross --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 220.135.210.113







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灯, 水草

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

TOP