1、abstract?class和interface的區(qū)別是什么?
1)接口用于規(guī)范齿风,抽象類用于共性绿店。
2)抽象類是類轧邪,只能被單繼承叼耙,接口可以一次實現(xiàn)多個。
3)抽象類可以提供某些方法部分實行,接口不可以炫狱。
4)抽象類的實例是它的子類給出的藻懒,接口的實例是實現(xiàn)它的類給出的。
5)抽象類中可以有方法實現(xiàn)视译,也可以定義非靜態(tài)的類變量嬉荆,接口只能聲明方法、屬性酷含、事件鄙早、索引器
6)在抽象類中加入一個方法,那么它的子類就同時有了這個方法第美,而在接口加入新的方法蝶锋,那么實現(xiàn)它的類就要重新編寫(這就是說為什么說接口是一個類的規(guī)范了。)
7)接口成員被定義為公共的什往,但抽象類的成員也可以是私有的、受保護(hù)的慌闭、內(nèi)部的或受保護(hù)的內(nèi)容成員(其中受保護(hù)的內(nèi)部成員只能在應(yīng)用程序的代碼或派生類中訪問别威。)
2、接口的特征是什么驴剔?使用接口的好處有哪些省古?
1)接口類似于抽象基類,不能直接實例接口丧失,接口中的方法是抽象方法豺妓,實現(xiàn)接口的任何非抽象類型都必須實現(xiàn)接口的所有成員。
2)接口不能包含常量布讹、字段琳拭、運(yùn)算符、實例構(gòu)造函數(shù)描验、析構(gòu)函數(shù)或類型白嘁,不能包含靜態(tài)成員。
3)接口成員是自動公開的膘流,且不能包含任何訪問修飾符絮缅。
4)接口自身可以從多個接口繼承,類和結(jié)構(gòu)可繼承多個接口呼股,但接口不能繼承類耕魄。
接口首先是一種規(guī)范,其次接口有利于代碼的復(fù)用彭谁,擴(kuò)展性好吸奴,易于維護(hù)
3、Overload和Override的區(qū)別是什么?
1)OverLoad是重載奄抽,是有相同的方法名蔼两,但參數(shù)類型或個數(shù)彼此不同。返回值類型可以不同逞度。
2)Override是重寫额划,是在子類與父類中,子類中的方法的方法名档泽,參數(shù)個數(shù)俊戳、類型都與父類中的完全一樣,在子類中覆蓋掉了父類的該方法馆匿。返回值類型必須相同抑胎。
4、?靜態(tài)成員和非靜態(tài)成員的區(qū)別渐北?
靜態(tài)變量使用static修飾符進(jìn)行聲明阿逃,在類被實例化時創(chuàng)建,通過類進(jìn)行訪問不帶有static修飾符聲明的變量稱作非靜態(tài)變量赃蛛,在對象被實例化時創(chuàng)建恃锉,通過對象進(jìn)行訪問一個類的所有實例的同一靜態(tài)變量都是同一個值,同一個類的不同實例的同一非靜態(tài)變量可以是不同的值呕臂,靜態(tài)函數(shù)的實現(xiàn)里不能使用非靜態(tài)成員破托,如:非靜態(tài)變量、非靜態(tài)函數(shù)等歧蒋。
5土砂、描述數(shù)據(jù)庫連接過程?
開始?-->?引入命名空間?-->?創(chuàng)建一個SqlConnection?-->?打開連接?-->?創(chuàng)建一個SqlCommand?-->?獲取SqlDataReader對象?-->?關(guān)閉SqlDataReader對象?-->?關(guān)閉連接?-->?結(jié)束
6谜洽、什么是命名空間萝映?怎樣引用命名空間?命名空間的作用是什么褥琐?不用命名空間可以嗎锌俱?
命名空間是類的邏輯的分組,它組成一個層次結(jié)構(gòu)—邏輯樹敌呈,這個樹的根是System
用using引入命名空間
作用:防止命名沖突
不可以
7贸宏、類的命名規(guī)范是什么?方法的命名規(guī)范是什么磕洪?
類:
1)類名應(yīng)該有意義吭练。
2)類名應(yīng)該是名詞。
3)類名首字母應(yīng)該大寫析显。
4)若兩個單詞鲫咽,每個單詞的首字母都大寫。
方法名:
1)動+名詞并有意義
2)首字母小寫,多個單詞組合時分尸,第二個單詞首字母要大寫锦聊。
3)不能為關(guān)鍵字
8、構(gòu)造方法有什么特征箩绍?它的作用是什么孔庭?
特征:沒有返回值,方法名和類名一樣材蛛。
作用:初始化成員變量圆到。
9、什么是封裝卑吭?什么是索引器芽淡?它們有什么區(qū)別與聯(lián)系?請舉例說明
封裝:將數(shù)據(jù)和操作組合到一起豆赏,并決定哪些數(shù)據(jù)和操作是對外可見的挣菲。
索引器:索引器是一種特殊的類成員,它能夠讓對象以類似數(shù)組的方式來存取掷邦,使過程看起來更為直觀己单,更容易編寫。
聯(lián)系:都有Get和Set而且都能通過它們對類里面的私有進(jìn)行訪問耙饰。
區(qū)別:
1)封裝名可自定義,索引器必須以this命名纹份。
2)封裝可以為實例或靜態(tài)苟跪,索引器必須是實例。
3)索引器有索引參數(shù)列表蔓涧,封裝沒有件已。
封裝:
Private?int?id;
Public?int?Id{
Get{return?id;}
Set{id=value;}
}
或者:
Private?int?id;
Public?int?GetId(){
Return?id;
}
Public?void?SetId(){
This.id=id;
}
索引器:
Public?int?this[int?index]{
Get{
If(index==0)return?name;
Else?if(index==1)return?password
Else?return?null;
}
Set{
If(index==0)name=value;
Else?if(index==1)password=value;
}
}