java 板


LINE

补充一些abstract class与interface的东西, 就比较学术上的说法, 这两种东西其实有点像, 但实际上是差很多的东西, 别人对这两个东西的定义是这样的: Interface: An Interface is a special type of class that only provides a specification (not an implementation) for its abstract members. Abstract classes: The main purpose of an abstract class is to define a common interface for its subclasses. Interface的部分Alien大说的我想已经相当明白, 它只负责定义一个规格或功能, 你的 classes可以选择是否要"支援"这个功能, 支援了之後你可以选择在你想要使用它的时候 使用它. 但规格制定出来, 要怎麽去实行(implements), 当然得看你选择去实作的class, 所以 compiler才会强制你要去实作该interface制定的规格(除非你这个实作的class是 abstract的) 举例来说, 假设我是一个物件, 我实作了两个介面: 上班族 and 男朋友, 那我在办公室 的时候, 就是以"上班族"这个介面做操作, 其他同事都是透过"上班族"这个介面与我沟通 , 同样的, 回到家後, 我便会换上"男朋友"这个介面. 这样的话, 我就不会在上班的时候 , 不小心被别人invoke到"男朋友"这个介面中的方法, 我在面对闪光时也不会被呼叫到 "上班族"这个介面的方法(成员), 但事实上我是实作这两个介面. 这与您所提到的"多重 继承"是有相当大的出入的... 继承比较多应该是用在Gen-spec(generalization-specialization)的概念上, 如同Alien 大说的, 就是一种"is-a", 或"is-a-kind-of"的概念, 那至於到底是不是继承abstract classes, 在这概念上则不重要了. 例如: BMWCar继承Car, ToyotaCar也继承Car, 则我们可以说, ToyotaCar "is a kind of" Car, 当然, BMWCar "is a kind of" Car, 而在现实世界中, Car可以是一种具体的物件. (谁说Car一定要有品牌= =, 铁牛车也是Car阿!!!!!) 但假设是: 男人 继承 人, 女人 继承 人, 当然我们可以说 男人 is-a-kind-of 人, 但这这个例子 中要注意的是, 既然有定义男人, 女人, 那"人"本身就不可是一个具体的物件, 因为人 不是男就是女(general case), "人"这个东西不该被实体化, 因为这样会不合理, 所以 在这个地方, 我会建议将"人"这个class设为abstract. 但"人"这个class仍然可以实作 大部分男女人都有的特性, 例如"人"都会有眼睛, 鼻子, 嘴巴等. 那至於什麽时候要用interface, 什麽时候做abstract class呢? 在这之前你可能必须要先回头来看, Object的原意是什麽, 为什麽程式要OO? An Object is an abstraction of a set of real world things. [Shlaer et al. 1992]. 更精确的说, An object is an entity that has responsibilities. i.e., it is responsible for itself. These responsibilities define the behavior of the object [Shalloway et al. 2005] 所以回归到源头, 还是要先得把对物件的观念厘清, 才能够设计出适合的抽象化结构. note: 不是把结构弄得越抽像越好, 这样实作的人也会把code写得很抽象.... "适当"的抽象化, 就够了... 献丑了... ※ 引述《adrianshum (Alien)》之铭言: : 这些很难在三言两语里解说得完 : 很多是要你有一定程度和有设计的经验才能了解. : 只抽取一些明显的错误和基本的概念答一答吧 : ※ 引述《ieping (maggie)》之铭言: : : 我只知道: : : Interface: : : 1.介面 : : 2.须加static : 没有须加 static 这事. : 你说得太含糊根本不知道你想表达什麽 : : 3.不能实做方法 : : 4.通常用在多重继承 : interface 和多重继承有本质上很大的差别. : 只可以说, 多重继承其中一种常用的状况, 能以 : interface 达成 : : 5.若类别要做interface要加上implements 介面_名称 : : Abstract: : : 1.抽象 : : 2.抽想类别 : : 3.抽想方法 : 抽想? : 你上面列这三句也是不知道你想说啥 : : 4.可以实做 : : 问题: : : 1.以上,还有其他的吗? : 了解他们本质上的分别, 比这些有的没的比较来得有用 : : 2.我有看人没有先用extends 类别_名称 直接 再类别用implements出好多的 介面 : : 是不是这样也可以?但不太知道代表的意思or概念? : 可以 : : 谢谢高手们~ : 以前看过某人,用了一个例子来说明 base class 和 interface 的分别. : (忘了是谁了, 请谅) : extends 一个 base class, 指的是 'is-a' 的关系 : interface 则是该物支援的介面 : 比如一部电视机, 它 是一个 (is-a) 电器. : 所以很自然, 电器是一个 class, 电视机 extends 电器 : 电视机支援 100v 电源输入 : 100v 电源输入是一个介面 (interface), 也很自然, 你可 : 以说 : 电视机 支援 (implements) 100v电源输入 : 但你不会说 : 电视机 是一个 100v电源输入 : 能感受到两者分别, 就是了解 class 和 interface 含义的最初也是最重要一步 --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 219.84.65.145 ※ 编辑: mc18 来自: 219.84.65.145 (05/20 02:31) ※ 编辑: mc18 来自: 219.84.65.145 (05/20 02:34)
1F:推 DavyBlue:好文推 05/20 12:29
2F:推 pauleagle:推这个好的观念讲解 05/20 15:00
3F:推 tangblack:好文 推 06/03 11:22







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