一、抽象類/抽象方法
1、抽象方法用abstract修飾。
2、抽象方法不能有方法體(大括弧也不能有)。
Eg:
}
3、抽象方法必須在抽象類中。
4、抽象類不能實例化,因為抽象成員,抽象成員是沒有方法體的。
5、子類必須重寫父類的抽象方法。
6、在子類中無法通過base關鍵字調用父類的抽象方法。
7、抽象方法是“光說不做”,只是定義了有這樣的行為,但是具體的實現,交給子類。
8、抽象類中可以擁有非抽象成員,為了繼承給它的子類。
9、抽象類中可以擁有虛方法。
10、抽象類使用場合:1)子類必須覆寫父類的方法。2)父類沒有必要實例化。
11、抽象類是被繼承的,繼承為了多態。
12、抽象成員,不能是私有的,因為子類沒辦法方法就沒辦法重寫。
Eg1:
View CodeEg2:
View Code
二、說說ToString/Equals方法
Eg:
View Code三、接口
1、用interface定義接口,它是一個特殊的抽象類,不能實例化。
2、裡面的成員不需要再加abstract,也不需要加訪問修飾符,默認就是public abstract.
3、接口只能定義屬性、方法、索引器、事件。
4、實現接口的類,必須要實現接口中的所有成員。
5、實現類在實現接口的成員的時候,不需要寫override關鍵字。
6、接口就是為了純粹的為了規范實現類的。
7、可以找到父類並且希望通過父類繼承給子類一些成員,用抽象類。多個類具有相同的方法,但是找不出父類,就可以將方法定義在接口中,讓這些類去實現。
8、一個類只能繼承一個父類,但是可以實現多個接口,父類要寫在第一個位置,一定程度上解決了類的單根性的問題。
9、接口可以繼承接口。
10、接口中的成員,可以實現為抽象方法或者虛方法,讓實現類的子類去實現。
11、顯示實現接口,是為了解決方法名沖突的問題,顯示實現的接口的方法是私有的,所以不能通過對象的變量來調用。
12、顯示實現接口,這個接口的實現方法,只能通過接口變量來調用。
Eg:
View Code