關(guān)于抽象類和接口的理解:
關(guān)于抽象類和接口的理解:
抽象類建議這樣來理解好一點(diǎn):抽象者,不確定也
就是原本是一個(gè)普通的類,但是由于有了一個(gè)抽象方法,所以這個(gè)類就必須成為一個(gè)抽象類.
為什么啦!
因?yàn)槎x成抽象類,就不允許直接實(shí)例化了. 想想也是顯然的,因?yàn)橛幸粋€(gè)方法是抽象方法,都沒有實(shí)現(xiàn),
實(shí)例化成對(duì)象了,然后對(duì)象調(diào)用這個(gè)方法不久瓜了么?
這就好比車子還沒有安上方向盤,如果要開的話,就沒辦法控制方向了.
抽象類使用的場合:
類的部分方法是確定的,而另外部分方法是不確定的,只有通過繼承的子類去確定這部分方法,
但是子類可以使用抽象類的確定的方法(重用).
這兒需要注意一點(diǎn):就是不要去Override 父類的非抽象方法,那寫方法是給你重用的,不是給你置換的.
原則:繼承應(yīng)當(dāng)用來擴(kuò)展超類的功能,而不是置換或者撤銷超類的功能
比如說,你有一個(gè)貓,然后你把狗繼承自貓,但是貓可以爬樹,狗不能.就只有把那個(gè)爬樹的功能撤銷了.想想這是多么荒唐的事情啊!!
那么何為接口啦:
就是說有一個(gè)類,所有的方法都是不確定的.
比如說 平面形狀,總歸有獲取設(shè)置邊長,面積這些方法吧,但是怎么去實(shí)現(xiàn)是不確定的.
好像 形狀這玩意兒 的確找不到能確定的方法.那么就可以定義成一個(gè)接口.
接口允許有 public static final 的屬性, 但是不推薦這樣用,這是一種錯(cuò)誤的用法.
可以認(rèn)為接口就是一個(gè)特殊的 抽象類(所有的方法都是不確定的)
然后接口有一個(gè)好處,就是可多繼承.
舉一個(gè)例子,說明抽象類和接口一起用的地方
比如說,門這個(gè)類有Opern和Close兩個(gè)方法,但是有一種特殊的門需要一個(gè)報(bào)警的功能,
但是報(bào)警不是門的特征,是報(bào)警器的特征,故可以把報(bào)警設(shè)置為一個(gè)接口
那么報(bào)警的門就從門這個(gè)抽象類和報(bào)警接口繼承
posted on 2008-07-23 19:03 zxbyh 閱讀(1588) 評(píng)論(6) 編輯 收藏 所屬分類: OOAD