程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> java 抽象類作用-請問各位大神:抽象類出現的原因?

java 抽象類作用-請問各位大神:抽象類出現的原因?

編輯:編程綜合問答
請問各位大神:抽象類出現的原因?

為什麼會出現抽象類,抽象類的作用是什麼呢?舉個例子那樣最好了。

最佳回答:


這個問題沒辦法簡單回答。

首先要搞清楚的是繼承有什麼用,函數重寫有什麼用。繼承和函數重寫實現的是代碼的復用(一次編寫,重復使用)

從最簡單的說起。你編寫了一個函數,你希望下次還要用,你怎麼做?直接調用就是了,是不是?

那麼我問你,如果你下次要用,但是代碼不完全一樣,需要修改下,怎麼用?你有兩個辦法:(1)復制一份代碼,再建一個函數。然後在裡面改。(2)直接在原來的函數中改,為了保證原來函數的調用的正確,你需要加一個參數,比如type,然後在需要修改的地方增加一個if判斷,如果是type=1,走原來的邏輯,否則走修改的邏輯。

你能說出這兩個辦法的問題麼?顯然方法1,增加了很多重復的代碼不說,而且如果發現這個函數別的地方有bug,需要修改,你同時要修改兩份代碼,很容易忘記。
方法2,你修改了函數的參數,那麼所有原先的調用者都要找出來跟著修改。而且,這個方法的問題還在於,你需要直接修改人家寫好的函數,如果是一個團隊開發,一個函數改來改去,你的代碼被別人修改了你都不知道,你下次調用,發現多了一個參數,你問誰去?

那麼怎麼解決?用繼承和函數重寫。定義一個類,把函數寫好,其中函數中可能需要擴展和變化的地方,提取出來放在另一個函數中,這個函數作為虛函數。
需要修改函數怎麼辦?不需要直接在代碼上修改,只要派生一個這個類型,重寫那個虛方法,就可以實現代碼的替換了。

以上我說的很簡略,你自己需要看書理解,並且寫幾個程序體會下。

知道了繼承和重寫是干嘛的,現在回答你的問題,抽象類是干嘛的。有時候我們需要編寫一些預制的代碼,但是這些代碼中的某一部分我們沒有辦法給一個具體的實現。
打一個比方,我們設計一個抽象的流的代碼,給這個流讀取、寫入、序列化、轉換為字符串、轉接到另一個流等操作。顯然,其它方法我們可以寫出來,但是讀取寫入我們沒法寫。不同的流,io是不同的,對不對?

此時我們怎麼做?只能用抽象類了。

u013400939
u011665766
qq_31325033
QQ81867376
jie_kong
cyboya
lydong_
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved