繼承的第一原則

2021-06-19 04:22:53 字數 1526 閱讀 7265

今天確實有點小冷了.真不想起床,也沒什麼胃口吃東西.繼續去上課~~~~ :-(

最近學的東西感覺都有時間去消化,慢慢來~~~~看看新聞什麼的調節下.今天微博貌似很火爆..各種戀愛啊..

跑題了.繼續**吧...

這次說的是繼承的第一原則

對於【繼承】的第一印象就是獲得了父的所有方法和屬性,所以相對於繼承了父的功能和職責。而後面自己的設計也是基

於這個原則,就是復用原則,復用父項的方法原則。慢慢的延伸就是有多個子類,就會把幾個子類共用的一些方法放到父類

裡面,而這種設計思想深深的影響了自己很久。

而這種方法卻在近年來被自己慢慢的推翻,現在使用繼承的第一原則就是模板,template。通過父類使用template模式

,構造出子類的流程,而自己只是在對應的鉤子方法(hook)裡面填充著差異的地方,如果不是這種情況,我會盡量的減少

繼承的使用。對於原來的把子類的方法推到父類的方法裡面,則通過其它的方式進行消除掉了。造成這種變化,只是源於一

個原則的影響,【一切私有方法都是有罪的】。

在編碼的時候,大量的把方法推到父類之後,才發現這些方法,別的地方也會需要,而這個時候,就很痛苦,因為通過繼

承肯定不行,但是不繼承,別的地方就需要copy乙份,不copy就需要把這個方法變成靜態的方法,而這個時候,就會出現

很奇怪的關係了。這種問題,我一般都是把這些方法歸屬到幾個其它類中,因為呼叫super.method(),和呼叫

other.method()實際上**是一樣的,都沒有減少和增加,但是類的職責卻清晰了很多。

近些年隨著ioc的增多,那麼template的使用也自然增多了很多,所以也自然的傾向於父類定義流程,子類實現差異的方

式來做,而不是父類提供方法,子類進行組裝。兩種差異的直觀比較,見下面的**。

第一種方式:父類提供大量方法,子類組裝

1 public class fathermehod

67 protected void b()

1011 protected void c()

1415 }

1 public class sonsetup extends fathermehod

7 }第二種方法:父類提供流程,子類實現差異(template)

1 public abstract class fathertemplate

78 protected abstract void a();

9 protected abstract void b();

10 protected abstract void c();

11 }

1 public class sondiff extends fathertemplate

67 protected void b()

1011 protected void c()

1415 }

差異就在於在第一種方式裡面子類實現的**,變成父類實現了,實現了控制反轉(ioc),這個就是我的繼承的第一原則

,template。

.哦對了,昨天那個還沒弄.算了,**不在,明天再發..

C 繼承構造原則

構造方法用來初始化類的物件,與父類的其它成員不同,它不能被子類繼承 子類可以繼承父類所有的成員變數和成員方法,但不繼承父類的構造方法 因此,在建立子類物件時,為了初始化從父類繼承來的資料成員,系統需要呼叫其父類的構造方法。如果沒有顯式的建構函式,編譯器會給乙個預設的建構函式,並且該預設的建構函式僅僅...

C 繼承裡的 就近原則

參考部落格 用三個類來描述c 繼承中的就近原則 animal類,bird類,chicken類 1.類關係 類之間的關係如下 public abstract class animal public class bird animal type private string color public s...

第一節 開閉原則和黎克特制替換原則

一.開閉原則 1.定義 對擴充套件開放,對修改關閉。當應用的需求改變時,在不修改軟體實體的源 前提下,可以擴充套件模組的功能,使其滿足新的需求。2.作用 1 對軟體測試的影響 軟體遵守開閉原則的話,軟體測試時只需要對擴充套件的 進行測試就可以了,因為原有的測試 仍然能夠正常執行。2 可以提高 的可復...