介面和抽象類

2021-09-01 15:01:13 字數 1570 閱讀 7052

書上寫著是規範派生類的屬性和方法??其實我沒看懂是什麼意思?意思是介面是成員變數然後抽象類是方法在派生類當中??

他給了乙個例子去理解

定義乙個汽車的介面,然後在介面中只定義了開車的方法,但是發動機如何啟動沒有實現(???啥玩意),而是在派生類中實現了開車的方法。

我的理解就是在介面的介面定義方法,然後定義乙個派生類繼承自介面,在這個派生類中實現在介面中定義的方法,有三點需要注意,

1 在介面中定義的方法只需要返回型別和方法名

2 在派生類中的方法需要修飾詞和返回型別和方法名

3 在呼叫派生類的方法時,如果方法中帶有引數,那麼呼叫的時候也需要帶有引數

介面之間也可以互相繼承,但是要是需要派生類來實現兩個介面所定義的方法

有乙個很有意思的一點是,類不能同時繼承兩個基類,但是通過介面,類可以同時繼承兩個以上的介面,也可以在繼承基類的同時再繼承乙個介面,實現多重繼承關係:

介面的多重繼承和類的多重繼承

介面的繼承意思是類繼承兩個介面,介面之間使用逗號分隔(乙個介面繼承兩個介面,兩個介面之間使用逗號分隔,然後派生類繼承自第乙個介面),????但我有乙個問題就是派生類可不可以同時繼承兩個介面,然後在介面處使用逗號分隔???

類的多重繼承意思是就是乙個派生類可以同時繼承乙個類和乙個介面,類和介面之間使用逗號分隔,在派生類中可以有自己的方法然後可以在自己的方法裡呼叫基類的方法,然後在實現介面中的方法。

然後就到抽象類了 書中講的很明確抽象類是介於介面和類之間的一種特殊的類,抽象類使用abstract關鍵字標識,抽象類中也定義了一些需要在派生類中實現的方法稱為抽象方法使用abstract來標識,但是我發現在抽象類中抽象方法的前面有public關鍵字很神奇了??我有點蒙了 。。。

派生類可以繼承抽象類,很大的不同點在於在實現抽象類中的方法時,要在public等之後加上override來重寫這個方法,abstract相當於virtual

抽象類之間的繼承關係因為只給了一段**,沒有詳盡的說明因此我只能憑這一段**來講講我學到的東西

抽象類繼承抽象類在子抽象類中不用實現父抽象類中的方法,並且可以實現自己的方法而不用定義在派生類中實現,然後派生類繼承子抽象類,然後在派生類中實現父抽閒類中的方法,最讓我困惑的一點就是,在main函式中當例項化派生類的時候,呼叫子抽象類的方法時是直接呼叫的,rect.fillcolor();但是我們在派生類中並沒有關於子抽象類中方法的宣告,只是在一開始的時候繼承了子抽象類。很是神奇~我剛才試了一下可以在子抽象類中定義乙個方法,然後在派生類中實現,也是可以執行的出來的。

抽象類和介面之間也可以實現繼承關係,書上明確的寫出在抽象類繼承介面的時候,可以實現介面中定義的方法,也可以不實現寫成抽象方法

從這裡可以看出抽象類當作為派生的時候很隨意,可以實現他繼承的方法也可以寫成抽象類然後在派生類中實現

abstract class epay

class paypal : epay

}class alipay : epay

}class epayfactory

return epay;

}}

static void main(string args)

介面和抽象類

介面和抽象類 今天自學了一下介面,從第一次接觸介面又進一步理解介面的原理。想到介面或許我們更多的是想到和類的對比,而類中抽象類和介面又更為相似。現在我講下我對介面和抽象類的理解。如果單從具體 來看,對這兩個概念很容易模糊,甚至覺得介面就是多餘的,因為單從具體功能來看,除多重繼承外 c 抽象類似乎完全...

抽象類和介面

抽象類 1.是一種特殊的類,除了不能被例項化外,具有類得其他特性.2.抽象類的方法可以不宣告為abstract,此時可以實現方法提 如果宣告為abstract,則不可以實現方法體,只能宣告,如 public abstract int remove int i,int j 此時類必須宣告為抽象 3.乙...

抽象類和介面

1.抽象類 含有abstract修飾符的類即為抽象類。可用於實現 重用。抽象類與普通類的唯一區別 不能建立例項物件 允許有抽象方法,但不必須是抽象的。抽象類中定義的抽象方法必須在具體子類中實現,所以不能有抽象構造方法或抽象靜態方法 如果沒有全部實現抽象父類的抽象方法,子類也要定義為抽象型別。2.介面...