假言推理 為什麼介面可以多重繼承,而類不可以

2021-05-22 21:14:59 字數 2264 閱讀 2434

假言推理是根據假言命題的邏輯性質進行的推理。分為充分條件假言推理,必要條件假言推理和充分必要條件假言推理三種。

充分條件假言推理是根據充分條件假言命題的邏輯性質進行的推理。

充分條件假言推理有兩條規則:

n 規則1:肯定前件,就要肯定後件;否定前件,不能否定後件

n 規則2:否定後件,就要否定前件;肯定後件,不能肯定前件

必要條件假言推理是根據必要條件假言命題的邏輯性質進行的推理。

必要條件假言推理有兩條規則:

n 規則1:否定前件,就要否定後件;肯定前件,不能肯定後件。

n 規則2:肯定後件,就要肯定前件;否定後件,不能否定前件。

充分必要條件假言推理是根據充分必要條件假言命題的邏輯性質進行的推理。

充分必要條件假言推理有兩條規則:

n 規則1:肯定前件,就要肯定後件;肯定後件,就要肯定前件。

n 規則2:否定前件,就要否定後件;否定後件,就要否定前件。

現在我們稱述本次需要推論的主題:在c#中,乙個類不允許從多個類繼承,但可以從多個介面繼承。為什麼類和介面在繼承的時候,有不同的待遇呢?

我們在父類中定義的成員,有哪些將來在子類定義的時候有約束呢?如果你認為是那些定義了public、private、protected、internal的方法,那你就錯了。父類對子類的定義有約束的是建構函式。

我們定義了如下類:order

public class order

public order(string number)

然後我們定義order的子類shiporder類時,首先就要滿足對父類建構函式定義的認可

public class shiporder : order

public shiporder(string number)

: base(number)

這個規則是c#的繼承構造規則:

派生類的建構函式隱式呼叫基類的建構函式。在繼承中,所有基類建構函式先於派生類建構函式獲得呼叫,並按照這些類在類層次結構中出現的先後順序呼叫。基類物件總是在任何派生類之前構建,因此,基類建構函式先於派生類建構函式獲得執行。對基類的建構函式又是通過base的關鍵字進行顯式的呼叫。

如果有以下的兩個類:order類和invoice類

public class order

public order(string number)

public class invoice

public invoice(string number)

現在我試圖設計乙個credence類從這兩個類繼承,就會遇到乙個困惑:我怎麼樣才可以讓這兩個類的基類安全構造呢?在以下的**中,你顯然可以發現,我們無法同時指定為兩個基類的建構函式作構造,因為base的關鍵字無法指定是呼叫具體哪個類的建構函式。

public class credence : order, invoice

public credence(string ordernumber,string invoicenumber)

:base(ordernumber)

如果你認為這還不算問題的話,我們可以假設一種更複雜的關係,我們改變下order和invoice的關係,**如下

public class order

public order(string number)

public class invoice : order

public invoice(string number)

: base(number)

現在,可憐的credence遇到了更困惑的問題,他應該先構造order類還是invoice類呢?所以我們得到乙個結論,如果基類沒有任何有參建構函式,那麼子類就不需要考慮為基類傳引數,僅需要隱式的構造父類即可。

那在c#中,有哪個資料型別可以肯定的沒有建構函式呢?答案是單一的:介面。

充分條件假言推理有兩條規則:

n 規則1:如果要構造子類,就必須先構造構造父類。

n 規則2:如果子類不需要顯式的構造父類,則父類肯定沒有有參建構函式。

必要條件假言推理是根據必要條件假言命題的邏輯性質進行的推理。

必要條件假言推理有兩條規則:

n 規則1:如果父類都沒有建構函式,子類不需要考慮父類的構造次序否定前件,就要否定後件;肯定前件,不能肯定後件。

n 規則2:肯定後件,就要肯定前件;否定後件,不能否定前件。

充分必要條件假言推理是根據充分必要條件假言命題的邏輯性質進行的推理。

充分必要條件假言推理有兩條規則:

n 規則1:肯定前件,就要肯定後件;肯定後件,就要肯定前件。

n 規則2:否定前件,就要否定後件;否定後件,就要否定前件。

假言推理 為什麼介面可以多重繼承,而類不可以

假言推理是根據假言命題的邏輯性質進行的推理。分為充分條件假言推理,必要條件假言推理和充分必要條件假言推理三種。充分條件假言推理是根據充分條件假言命題的邏輯性質進行的推理。充分條件假言推理有兩條規則 n 規則1 肯定前件,就要肯定後件 否定前件,不能否定後件 n 規則2 否定後件,就要否定前件 肯定後...

C 為什麼不要多重繼承

不如換種做法?總結多重繼承指的是某個類同時繼承了兩個或以上的其他類。那麼多重繼承存在著什麼問題呢?class machine machine class printer public machine class scanner public machine class printerscanner ...

為什麼java的類是單繼承的,介面可以多繼承。

前乙個問題很容易想的到,如果乙個類 多繼承了兩個類,但是這兩個類中有相同的方法,那麼我子類呼叫,無法確定應該呼叫哪個方法。但是介面設計成多繼承卻是可以避免上面的問題的。因為介面只有抽象方法,具體方法只能由實現介面的類實現,在呼叫的時候始終只會呼叫實現類 也就是子類覆蓋的方法 的方法 不存在歧義 因此...