作者TonyQ (沉默是金)
看板java
标题Re: [问题] Abstract 和 Interface 差别?
时间Mon May 18 20:09:15 2009
※ 引述《ieping (maggie)》之铭言:
: 我只知道:
: Interface:
: 1.介面
: 2.须加static
这不是必须的
: 3.不能实做方法
: 4.通常用在多重继承
....这也不是重点
: 5.若类别要做interface要加上implements 介面_名称
: Abstract:
: 1.抽象
: 2.抽想类别
: 3.抽想方法
: 4.可以实做
: 问题:
: 1.以上,还有其他的吗?
: 2.我有看人没有先用extends 类别_名称 直接 再类别用implements出好多的 介面
: 是不是这样也可以?但不太知道代表的意思or概念?
: 谢谢高手们~
你对 interface 跟 Abstract 的描述其实有写跟没写差不多.
Abstract 跟 interface 在观念上看起来差异不大 ,
但在实做上适用的情况差很多 .
因为 inerface 是需要"实作" , 而且可以实作多个,
(这跟多重继承是两回事...)
所以 interface 比较适合定义一群类别来共同实现某些接口 .
for example , Clonable / Comparable .
藉此将类别汇聚成共同具有某些函式的介面 , 以此来透过多型进行操作.
而抽象类别的用法 , 则通常是作打底的功用 ,
可能把属於一群类别共同会用到的 method 提炼出来到父类别 ,
但是就父类别本身目的/责任又不一定足以到成为一个类别 ,
此时抽象类别就会是个好选择 .
介面是一种"识别"/"多型操作"的手段 , 但不包含实做方式的传递 ,
但抽象类别则主要是在於实作方式的共用与对实做方式的要求.
典型抽象类别跟 interface 不同用途的应用是 template method pattern.
--
What do you want to have ? / What do you have?
从书本中,你可以发现我的各种兴趣。
从CD中,你可以了解我所喜欢的偶像明星。
或许从文字你很难以了解一个人,但从物品可以。
My PPolis , My past. http://ppolis.tw/user/Tony
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 221.169.78.140
1F:推 th19883617:看到tony大跪拜一下 小弟为了学java转了不少你之前的文 05/18 20:37
2F:推 Kelunyang:老师上课的时候是说,Interface是一种协定 05/18 22:27