1.c#中類是否支援多繼承?請說明原因。
答:不支援,需要用介面來實現多繼承
2.我們都知道乙個類可以有多個建構函式,並且c#會在我們建立類的時候預設的提供乙個無參的建構函式,當我實現了另外乙個有引數的建構函式的時候,我還能呼叫無引數的建構函式嗎?請說明原因。
答:不能,因為一旦你實現了乙個建構函式,c#就不會再提供預設的建構函式了,所以需要自己手動寫入乙個無引數的建構函式。
3.請簡略描述過載和重寫的區別?
答:方法過載提供了乙個相同的方法但是方法簽名的引數不同的呼叫的實現。
重寫提供了子類中改變父類方法行為的實現。
4.請問能設定類a可被繼承,但類a中的某個方法不能被重寫嗎?
答:能,將類a的修飾符標記為public、標記類a中的不允許重寫的方法為sealed
sealed關鍵字不僅可以限制類,也可以限制方法。
5.const和readonly有什麼區別?
答:const關鍵字用來宣告編譯時的常量
readonly用來宣告執行時的常量
6.什麼時候必須宣告乙個類為抽象類?
答:(1)當這個類中有抽象方法的時候,必須宣告類為抽象類
(2)該類沒有完全實現父類的抽象方法時,也需要宣告為抽象類
7.介面和抽象類的區別是什麼?
答:介面中所有的方法都不能有實現,並且不能指定方法的修飾符
抽象類中可以有方法的實現,也可以指定方法的訪問修飾符
第乙個繼承介面的類必須實現介面裡的所有方法
而抽象類中抽象方法的實現是由第乙個非抽象的派生類來實現
8.類的私有成員會被子類繼承嗎?請說明原因。
答:會被子類繼承,但是不能被訪問。所以看上去是不能被繼承的,實際上確實被繼承了。
9.請寫出c#中的單例模式
答:public class single
public static single getinstance ()
return instance;}}
10.現有乙個整數number,請寫乙個方法判斷這個整數是否是2的n次方
答:private static bool getflag(int num)
11.追加乙個雙重鎖定的單例模式
1view codeusing
system;
2using
system.collections.generic;
3///
4///
適用於在多執行緒的情況下保證只有乙個例項化物件的情況,例如銀行的作業系統
5///
6namespace
doublelockinstance723
24//
例項化物件的方法
25public
static
singleton getinstance ()
2640}41
}42return
myinstance;43}
44}45 }
c 面試題雜項整理
static用法及優點 用法 不能在類宣告中初始化,不能通過建構函式初始化,在定義時初始化 1 static 成員 在類的作用域,避免與其他類成員,全域性變數衝突。阻止乙個類的例項化 純虛函式,建構函式宣告為public 在類內部建物件,不允許在外部建物件main 執行前做了什麼 全域性物件的建構函...
C 面試題精簡整理
c 中完全可以刪除 struct 關鍵字,保留 struct 關鍵字是為了相容c。class和struct地唯一區別 class預設域是 private,struct 預設域是 public。現在c 程式設計常使用struct作為乙個組合。例如 struct combination new的底層是由...
面試題整理 C (二)
1.類,介面的區別 從定義的角度 類描述乙個實體,包括狀態 屬性和動作 介面定義一類動作,沒有實現,也沒有狀態資訊 從程式的角度 介面是函式宣告 類是函式實現 介面可以有屬性,不能有欄位 乙個子類只能繼承乙個父類,但是可以繼承多個介面 2.介面和抽象類的區別 抽象類是一類事物的高度聚合,介面是定義行...