看到了一段例子是關於抽象類與介面的理解的,形象生動,忍不住要分享一下!
如超級管理員,普通管理員,vip會員,普通會員。
這些角色都有登陸,修改密碼這些共同的行為,你可以把這些行為規範為一些統一的名稱,如login和updatepassword,將它們抽到抽象類中,
然而因為各角色的身份不一樣,所以實際上執行這些行為的步驟可能不一樣,例如資料表的不同,則需要不同的子類去實現不同的**,這就是抽象模擬普通類作為基類被繼承的其中乙個優點。
實際上你也可以不用抽象類,直接在每個子類定義相應的行為也可以,如memberlogin、adminlogin等,
但如果是在中大型軟體裡,基於命名規範化,後續擴充套件和維護考慮,可能用抽象類好些,統一用login,這樣後面的人看到這個就基本了解情況
介面,如sp1234所說,.net並不支援多重繼承基類,好比普通管理員和超級管理員都有管理會員的功能,但vip會員和普通會員卻沒有管理會員的功能,這時候,如果你把管理會員功能與上面的登陸、修改密碼這些行為抽出來放到同乙個介面裡,也不是說不可以,但這要求vip會員和普通會員在繼承這個介面時,同時必須實現管理會員這個行為,即使實際上你在這個行為裡什麼也不做。然而基於規範角度來看,這些不屬於的行為的存在,會讓人有歧義。
而如果你把登陸、修改密碼行為放到介面1,把管理會員的行為放到介面2,把管理管理員的行為放到介面3,則:
普通會員和vip會員只需要繼承介面1;
管理員需要同時繼承介面1,介面2;
超級管理員需要同時繼承介面1,介面2,介面3。
今天看書時看到了一句這麼的話:「開發人員的整個職業生涯都可能用不上這些專用技術,這些工具不是彼此相關的,但它們可被看做解決特定問題的工具箱。」
想來是啊,有些知識,也只能是學習學習,實際上用到的,得等到有需求才行,或許有些技術自己一輩子都用不著。
java抽象類與介面的區別抽象類與介面的特性是什麼
介面和抽象類的概念不一樣。介面是對動作的抽象,抽象類是對根源的抽象。抽象類表示的是個物件,什麼物件。介面表示的是物件的功能,能做什麼。舉個例子 男人 物件 和女人 物件 這兩個類 物件 他們可以抽象為人。公貓和母貓可以抽象為貓。人可以吃飯,可以睡覺,貓呢也可以吃飯和睡覺,那麼這個 吃飯 睡覺 就是某...
抽象類和介面的理解
1.抽象類 抽象類更像是乙個模板,它擁有類的所用功能,它不僅可以寫抽象方法,也可以寫實現的方法,定義變數等等。總歸他有類的一切功能只是不能被例項化而已。它有單繼承的功能。2.介面 介面更像是對於行為上的定義,它是抽象方法的集合。它的變數會被private static final預設修飾。他可以擁有...
c 抽象類與介面的區別
前面幾篇部落格介紹了抽象類與介面,提到其中乙個,很容易想到另外乙個,包括搜尋時自動聯想的內容也是兩者的區別,因為抽象類和介面在使用方法上很類似。如果想簡單看下兩者區別的,這裡我以 excel 形式做了總結。如果想深入了解兩者區別的,可以看下方內容。為方便理解,這裡我再簡述一下抽象類與介面。抽象類 抽...