java 板


LINE

物件导向 OOP Object-Oriented Programming OOA Object-Oriented Analysis 从以前就从网路上得知有四大观念 但没真正搞懂这两个东西 abstraction polymorphism 网路上的说法也不太一致 最近又再重看了一次 我这次的想法是这样 abstraction 几乎是所有 OOP 的核心思想 用简单的东西表达复杂的东西 只需要知道如何操作各种东西 不需要知道那个东西到底是怎麽被做出来的 只是 OOP 着重於用 object 来做到 abstraction 而 functional programming 着重於用 function 来做到 也因次 OOP 衍生出其他三大观念 encapsulation inheritance polymorphism 其中 polymorphism 在网路上也是有很多解释 我觉得只要是能用一个百变怪来代表多个东西 那就是 polymorphism 1. 如果 A1 A2 A3... 和 B 的关系 是 extends 或 implements 让 B b = (其中一个 A) a 这时百变怪 b 是(其中一个 A) b 的函式其实是(其中一个 A)的函式 2. override 和 1. 有点类似 但只局限於 extends 的关系 3. overload 同一个函式名称可以代表多个功能类似但细微不同的运算 不知道我这样想对不对? --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 69.181.64.182
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/java/M.1518421867.A.5E0.html
1F:推 zephyrhymn: 可以看一下 #1A4lZ_dX 02/13 09:51
如果把 extends 和 implements 都看做类似的东西 先姑且把他们都叫做继承 (大家先别玩文字游戏) 我觉得 interface 其实就是一种可以多重继承没有实体的 class 有些人会用 is-a has-a 来区分 很容易会碰到多重继承的问题 我觉得只有"未来不太可能会多重继承的"才会用 extends class 的方式 例如那篇文说 我是(is-a)上班族 我是男朋友 上班族男朋友是 interface (implements) 这和 has-a = interface 的说法相抵触 又说 BMWCar 继承(extends) Car 而且 ToyotaCar 继承 Car 同理 战斗机继承飞机 运输机继承飞机 如果未来做出能在一般道路开又能在天上飞的交通工具 那岂不是这个交通工具就没办法同时继承车子和飞机了吗? 我并不是要提倡什麽都要用 interface 的确未来什麽事(多重继承)都可能发生 但 extends class 还是有他的好处 他让很多东西都可以重复使用 所以"未来不太可能会多重继承的"还是可以用 extends class OOP 其实有很多缺点和限制 所以 Java 做了很多相对应的 workaround 之後再用文字游戏美化这些 workaround interface 就是其中一个例子 很多 design pattern 也是 ※ 编辑: erikkk (69.181.64.182), 02/13/2018 14:15:33
2F:→ ssccg: has-a = interface的说法哪来的? has-a是composition吧 02/13 16:26
3F:→ ssccg: interface...就是interface,从外显的功能来定义 02/13 16:28
4F:→ ssccg: 你用车子和飞机会觉得冲突,是因为你定义的Car = 路上走 02/13 16:29
5F:→ ssccg: Airplane = 空中飞,这很明显是从外显功能定义是interface 02/13 16:29
6F:→ ssccg: 继承关系是以实作为本体的,Car应该是指由底盘车身引擎... 02/13 16:32
7F:→ ssccg: 以特定方式组成的类别,如果未来可以飞的车,组成方式是以 02/13 16:32
8F:→ ssccg: 现在的车子加上飞行功能,那就是Car : Flyable 02/13 16:33
9F:→ ssccg: 不然不用未来,现在飞机就能在路上走了啊 02/13 16:33
10F:→ ssccg: 如果这个外显功能不只是描述,还包含实作,现在interface 02/13 16:39
11F:→ ssccg: 也支援default method了(在OOP叫Mixin) 02/13 16:41
12F:→ erikkk: 那说法不是我说的 02/14 03:22
13F:→ erikkk: 所以你的说法是 功能用interface分 实体用extends class 02/14 03:23
14F:→ erikkk: 那如果飞机越做越像车子 车子也越做越像飞机 02/14 03:24
15F:→ erikkk: 你还是会遇到多重继承的问题 02/14 03:24
16F:→ erikkk: 你只是硬套上一个实体(架构 组成方式)不会改变的限制 02/14 03:25
17F:→ erikkk: 我猜想在这种情况下你可能就选一边站 飞机或车子 02/14 03:26
18F:→ erikkk: 或是另开一个class 02/14 03:27
19F:→ ssccg: 说真的如果两个东西接近到可以用一个类别来modeling,那 02/14 05:29
20F:→ ssccg: refactor成一个也是很正常的,我觉得不能多重继承是限制, 02/14 05:30
21F:→ ssccg: 但不是缺陷,不用提这个例子也有无数该重写的情况了 02/14 05:31







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

请输入看板名称,例如:Boy-Girl站内搜寻

TOP