版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、.NET OOP 面向對象編程1. 面向對象的三大基本原則?封裝,繼承,多態(tài)。(1) 封裝:隱藏內部實現(xiàn),穩(wěn)定外部接口;好處:保證對象自身數據的完整性和安全性(2) 繼承:子類繼承父類的成員;好處:實現(xiàn)代碼復用,方便系統(tǒng)的擴展(3) 多態(tài):A:不同子類對象同一個消息(方法調用);做出不同的反映;B :同一個類在不同情況下表現(xiàn)出不同的行為。靜態(tài)方法和實例方法:(1)靜態(tài)方法里面不能直接調用實例方法(不能直接寫方法名),需要實例化對象,然后再用對象方法名去調用。靜態(tài)方法中不能用this 關鍵字直接調用實例方法。(2) 實例方法里面可以直接使用靜態(tài)方法(直接寫靜態(tài)方法名)2. .傳入某個屬性的set
2、(設置器)方法的隱含參數的名稱是什么?value,它的類型和屬性所聲名的類型相同。3. c#中字段和屬性的區(qū)別字段是變量;屬性是對字段的封裝,對外提供的訪問,保證數據的安全4. .請敘述屬性與索引器的區(qū)別。屬性 a 通過名稱標識b 通過簡單名稱或成員訪問來訪問。c 可以為靜態(tài)成員或實例成員d 屬性的 get 訪問器沒有參數e 屬性的 set 訪問器包含隱式value 參數索引器 a 通過簽名標識。b 通過元素訪問來訪問。c 必須為實例成員。d 索引器的get 訪問器具有與索引器相同的形參表e 除了 value 參數外,索引器的set 訪問器還具有與索引器相同的形參表5. 如何在C#中實現(xiàn)繼承?
3、在類名后加上一個冒號,再加上基類的名稱。6. C#支持多重繼承么?不支持多繼承??梢杂媒涌趤韺崿F(xiàn)。7. 被 protected 修飾的屬性/方法在何處可以訪問?在繼承或間接繼承與這個類的子類中可以訪問。8. 私有成員會被繼承么?會,但是不能被訪問。所以看上去他們似乎是不能被繼承的,但實際上確實被繼承了。9. 簡述 private 、 protected 、 public 、 internal 修飾符的訪問權限。private : 私有成員, 在類的內部才可以訪問。Protected : 保護成員,該類內部和繼承類中可以訪問。public :公共成員,完全公開,沒有訪問限制。internal:在
4、同一命名空間內(同一個程序集中)可以訪問。10. 可訪問性級別有哪幾種?public 訪問不受限制。protected 訪問僅限于包含類或從包含類派生的類型。internal 訪問僅限于當前程序集。protected internal 訪問僅限于從包含類派生的當前程序集或類型。private 訪問僅限于包含類型。11. 請描述一下修飾符protected internal。被 protected internal 修飾的屬性方法只能在它的在同一個程序集(Assembly)中的子類被訪問。12. C#提供一個默認的無參數構造函數,當我實現(xiàn)了另外一個有一個參數的構造函數時候,還想保留這個無參數的構
5、造函數。這樣我應該寫幾個構造函數?兩個,一旦你實現(xiàn)了一個構造函數C#就不會再提供默認的構造函數了,所以需要手動實現(xiàn)那個無參數構造函數。13. C#中所有對象共同的基類是什么?System.Object.14. . 重載 Overload 和 覆寫 Override (重寫)有什么區(qū)別?(1)重載:針對一個類 來說,當定義兩種或多種具有 相同名稱的方法時,就稱作重載。只要方法名相同,別的可以不同,方法的重載一般滿足2 個條件 返回類型相同,參數類型相同,參數個數不同; 返回類型不同,參數類型不同,參數個數相同 參數加 ref 或者out, 與不加 ref 或 out 也可以構成重載,但是參數加r
6、ef和 out不能同時一起構成重載的。(2) 重寫: 一般用于有繼承關系的類(針對多個類),多數情況下是父類中有抽象方法或者虛方法,在子類中使用override 關鍵字重寫父類的方法,而且重寫方法的名稱,方法的返回類型,參數類型,參數個數都要和基類一致。15 . 在方法定義中,virtual (虛有的方法)有什么含意?被 virtual 修飾的方法可以被子類覆寫。16 .能夠將非靜態(tài)的方法覆寫成靜態(tài)方法么?不能,覆寫方法的簽名必須與被覆寫方法的簽名保持一致,除了將virtual 改為override。17 .可以覆寫私有的虛方法么?不可以,甚至子類中無法訪問父類中的私有方法。18 .能夠阻止某
7、一個類被其他類繼承么?可以,使用關鍵字sealed。 (密封類:不能被其他類繼承)19 sealed關鍵字 有什么特點?sealed 修飾符可以應用于類、實例方法和屬性。修飾類,那么此類不能被繼承,密封類不能被繼承。密封方法會重寫基類中的方法,但其本身不能在任何派生類中進一步重寫。當應用于方法或屬性時sealed 修飾符必須始終與override 一起使用。20能夠實現(xiàn)允許某個類被繼承,但不允許其中的某個方法被覆寫么?可以,標記這個類為public,并標記這個方法為sealed。21 . 什么是抽象類(abstract class )?一種不可以被實例化的類。抽象類中一般含有抽象方法,當然也可
8、有具體實現(xiàn)。繼承類只有實現(xiàn)過所有抽象類的抽象方法后才能被實例化。22 . 何時必須聲明一個類為抽象類? 當這個類中包含抽象方法時,或是該類并沒有完全實現(xiàn)父類的抽象方法時。23 . 為什么不能指定接口中方法的修飾符? 接口中的方法用來定義對象之間通信的契約,指定接口中的方法為私有或保護沒有意義。他們默認為公有方法。24 .那么如果這些接口中有重復的方法名稱呢?這種情況中你可以決定如何實現(xiàn)。當然需要特別得小心。但是在編譯環(huán)節(jié)是沒有問題的。(只是會提出警告:這時可以使用New 關鍵字消除警告)25 請解釋接口的顯式實現(xiàn)有什么意義? 答 : 規(guī)定強制執(zhí)行,保持一致26 . 虛方法 (virtual)
9、和抽象 (abstract) 方法區(qū)別:虛方法和抽象方法都可以用override 重寫。在子類中重寫后,會覆蓋父類中的方法。抽象方法必須在子類中重寫。抽象方法沒有方法體,虛方法有方法體。在子類中也可以不重寫父類中的虛方法,或者不寫自己的方法,則子類可以使用Base 調用父類中的虛方法。27 .什么是虛函數?什么是抽象函數? 虛函數:沒有實現(xiàn)的,可由子類繼承并重寫的函數。抽象函數:規(guī)定其非虛子類必須實現(xiàn)的函數,必須被重寫。28 abstract 的 method 是否可同時是static, 是否可同時是native ,是否可同時是synchronized?答:都不能。30 接口( interfa
10、ce )和抽象類(abstract class)的區(qū)別是什么?(1) 接口 也可以理解為一種特殊的抽象類,也可以實現(xiàn)多態(tài)和繼承。接口中的字段,屬性,方法等 都不做具體的實現(xiàn)。接口是一組規(guī)范,一種標準,必須實現(xiàn)了接口才能實現(xiàn)某種功能。通常用來約束類的行為。實現(xiàn)接口的子類,必須實現(xiàn)接口中提供的未實現(xiàn)的方法或屬性等。接口支持多繼承,一個類可以實現(xiàn)多個接口。接口可以作為返回值或者參數來使用。接口傳遞的是:實現(xiàn)了接口的類的實例化對象;返回的也是:實現(xiàn)了接口的對象。(2) 抽象類:聲明方法的存在而不去實現(xiàn)它的類被叫做抽像類(abstract class)抽象類不能被實例化,必須通過子類來實例化。(里氏替換
11、原則)。實例化以后,父類中的抽象方法會被子類覆蓋。抽象類不能是靜態(tài)或者密封類(因為抽象類一般是做父類對象);抽象類中不一定有抽象方法(抽象類中即可以包含抽象方法:沒有實現(xiàn)的方法;也可以包含非抽象方法:實現(xiàn)的方法,具體方法;也可以指定方法的訪問修飾符),有抽象方法的類一定是抽象類(抽象方法必須包含在抽象類中)。當子類繼承抽象類,一定要實現(xiàn)抽象類中的抽象方法。31 接口是否可以繼承接口?抽象類是否可以實現(xiàn)(implements) 接口 ? 抽象類是否可以繼承實體類(concrete class)?接口是可以繼承接口的,抽象類是可以實現(xiàn)接口的,抽象類可以繼承實體類,但是有個前提條件(實體類必須要有明
12、確的構造函數。)32 C#中接口(Interface )和類 (class) 的異同 接口和類都是類,不同的事,接口只包含方法或屬性的聲明,不包含具體實現(xiàn)方法的代碼,接口可以實現(xiàn)多繼承,而類只能是單繼承,繼承接口的類必須實現(xiàn)接口中聲明的方法或屬性。接口主要定義一種規(guī)范,統(tǒng)一調用方法,在大型項目中接口正發(fā)揮日益重要的作用。接口是一種規(guī)范,聲明方法、字段等而不去實現(xiàn)它,具體的實現(xiàn)交由實現(xiàn)它的子類來完成,可以理解成抽象類的變體。同時也不能聲明為static、 sealed類。類 是方法和字段具體實現(xiàn)的地方,實現(xiàn)接口則必須實現(xiàn)接口中所有的方法等接口 是負責功能的定義,項目中通過接口來規(guī)范類,操作類以及
13、抽象類的概念!而類是負責功能的具體實現(xiàn)!在類中也有抽象類的定義,抽象類與接口的區(qū)別在于:抽象類是一個不完全的類,類里面有抽象的方法,屬性,也可以有具體的方法和屬性,需要進一步的專業(yè)化。但接口是一個行為的規(guī)范,里面的所有東西都是抽象的!一個類只可以繼承一個基類也就是父類,但可以實現(xiàn)多個接口33. 請你說說.NET中 類 (class) 與結構 (struct) 的 區(qū)別 ?Class可以被實例化,屬于引用類型,是分配在內存的堆上的,Struct屬于值類型,是分配在內存的棧上的.結構與類共享幾乎所有相同的語法,但結構比類受到的限制更多:盡管結構的靜態(tài)字段可以初始化,結構實例字段聲明還是不能使用初始
14、值設定項。結構不能聲明默認構造函數(沒有參數的構造函數)或析構函數。結構的副本由編譯器自動創(chuàng)建和銷毀,因此不需要使用默認構造函數和析構函數。實際上,編譯器通過為所有字段賦予默認值(參見默認值表)來實現(xiàn)默認構造函數。結構不能從類或其他結構繼承。結構是值類型- 如果從結構創(chuàng)建一個對象并將該對象賦給某個變量,變量則包含結構的全部值。復制包含結構的變量時,將復制所有數據,對新副本所做的任何修改都不會改變舊副本的數據。由于結構不使用引用,因此結構沒有標識- 具有相同數據的兩個值類型實例是無法區(qū)分的。C# 中的所有值類型本質上都繼承自ValueType ,后者繼承自Object 。 編譯器可以在一個稱為裝
15、箱的過程中將值類型轉換為引用類型。結構具有以下特點:l 結構是值類型,而類是引用類型。2。向方法傳遞結構時,結構是通過傳值方式傳遞的,而不是作為引用傳遞的。3 . 與類不同,結構的實例化可以不使用new 運算符。4 . 結構可以聲明構造函數,但它們必須帶參數。5 一個結構不能從另一個結構或類繼承,而且不能作為一個類的基。所有結構都直接繼承自System.ValueType ,后者繼承自System.Object 。6 結構可以實現(xiàn)接口。7 在結構中初始化實例字段是錯誤的。( 類 可以實現(xiàn)接口。)34 . 如何區(qū)別重載方法?不同的參數類型,不同的參數個數,不同的參數順序。(具有相同方法名名稱)3
16、5 . const 和 readonly 有什么區(qū)別?const關鍵字用來聲明編譯時常量,固定不變的常量。(.NET 中聲明常量使用的關鍵字)readonly 用來聲明運行時常量每一個 class 至多只可以定義一個static 構造函數,并且不允許增加訪問級別關鍵字,參數列必須為空。為了不違背編碼規(guī)則,通常把static數據成員聲明為private,然后通過statci property 提供讀寫訪問。const 關鍵字用于修改字段或局部變量的聲明。它指定字段或局部變量的值不能被修改。常數聲明引入給定類型的一個或多個常數。const數據成員的聲明式必須包含初值,且初值必須是一個常量表達式。因
17、為它是在編譯時就需要完全評估。const成員可以使用另一個const成員來初始化,前提是兩者之間沒有循環(huán)依賴。readonly在運行期評估賦值,使我們得以在確?!爸蛔x訪問”的前提下,把object的初始化動作推遲到運行期進行。readonly 關鍵字與const 關鍵字不同:const 字段只能在該字段的聲明中初始化。readonly 字段可以在聲明或構造函數中初始化。因此,根據所使用的構造函數,readonly 字段可能具有不同的值。另外,const 字段是編譯時常數,而readonly 字段可用于運行時常數。readonly 只能在聲明時或者構造函數里面初始化,并且不能在static 修飾
18、的構造函數里面。36 . 在c#中using 和 new這兩個關鍵字有什么意義,請寫出你所知道的意義?Using 引入一個名子空間,或在使用了一個對像后自動調用其IDespose,New 實例化一個對像,或修飾一個方法,表此方法完全重寫此方法37 . 構造器 Constructor 是否可被override?構造器 Constructor 不能被繼承,因此不能重寫Overriding ,但可以被重載Overloading 。38 . new 關鍵字有幾種用法?(1)new 運算符用于創(chuàng)建實例化對象和調用構造函數。(2)new 修飾符用于向基類成員隱藏繼承成員,隱藏基類的方法。(注意:當子類和父
19、類中有相同的方法名時: 使用new可以消除警告)(3)new 約束 用于在泛型聲明中約束可能用作類型參數的參數的類型。39 . 概述反射和序列化?(一) 序列化:( 1)序列化是將對象轉換為容易傳輸的格式的過程。就是將對象的狀態(tài)存儲到特定存儲介質的過程,也可以說是將對象狀態(tài)轉換為可保持或傳輸的格式的過程。在序列化過程中,會將對象的公有成員,私有成員包括類名,都轉換為數據流的形式,存儲到存儲介質中,這里說的存儲介質通常是文件。 例如,可以序列化一個對象,然后使用HTTP 通過 Internet 在客戶端和服務器之間傳輸該對象。在另一端,反序列化將從該流重新構造對象。注意:如果要序列化某個特定對象
20、,他的各個成員對象也必須是可序列化的。( 2)特性:使用Serializable 標記一個類是可序列化,而Serializable 本身就是可序列化特性。所謂特性,就是為目標元素(可以是數據集,模塊,類,屬性,方法,甚至函數參數等)加入附加信息,類似于注釋。特性本質上也是一個類,Serializable 對應的類是SerializableAttribute .( 一般特性命名都是以Attribute 結尾 )(3) 例如:FileStream fileStream=null;fileStream=new FileStream (“profile.bin ” ,FileMode.Create);
21、/定義一個文件流BinaryFormatter bf=new BinaryFormatter();/二進制方式(使用二進制格式化器)bf.Serialize(fileStream,Profile);/序列化保存配置文件對象Profile序列化需要通過文件流來保存文件,所以要先定義一個文件流,BinaryFormatter 是一個二進制格式化器。方法: public void Serialize (Stream serializationStream,Object graph)第一個參數是:指定序列化過程的文件流第二個參數是:要保存的對象( 4)反序列化:(讀取文件)就是從特定存儲介質中將數據重
22、新構建對象的過程??梢詫⒋鎯υ谖募系膶ο笮畔⒆x取出來。通過方法:public Object Deserialize(Stream serializationstream) 將存儲介質的數據文件流轉為Object。(5) 序列化的用途和好處:通過序列化將對象從一個應用程序發(fā)送到另一個應用程序中。在遠程通信中應用廣泛,可以將一個應用程序中對象序列化,然后通過網絡通信遠程傳遞到其他指點的另一個應用程序。(二)反射: ( 1) 簡單概述為“動態(tài)獲取程序集信息”。程序集包含模塊,而模塊包含類型,類型又包含成員。反射則提供了封裝程序集、模塊和類型的對象。您可以使用反射動態(tài)地創(chuàng)建類型的實例,將類型綁定到現(xiàn)
23、有對象,或從現(xiàn)有對象中獲取類型。然后,可以調用類型的方法或訪問其字段和屬性( 2) A:可以用ILDasm 反編譯工具瀏覽一個Dll 和 EXE 的構成,這種機制我們稱為反射。B :它用于在運行時通過編程方式獲得類型信息。例如:當在Visual Studio 中輸入一個類型,然后輸入“.”時,就會拉出一個列表,顯示類型的屬性,方法,事件等。這都是利用了反射機制。C: 反射可以獲取已加載的程序集和在其中定義的類型的信息,也可以使用反射在運行時創(chuàng)建類型實例,以及調用和訪問這些實例。( 3) 反射的功能:就是查找程序集的信息.System.Refection.AssemBly 類可以用于訪問給定的程
24、序集的信息,它允許訪問給定程序集的元數據。好處:反射得到的版本號的最大用處是定期升級軟件,反射時一個非常強大的機制,利用反射,可以了解一些沒有源代碼的程序的結構,從而提高程序集的利用效率(三)程序集(1) 程序集: 在一個 .NET 的 WinForms 應用程序編譯后,在 binDebug 文件夾中生成一個.exe文件 ,這個編譯好的.exe文件就是程序集。程序集:是.Net 框架應用程序的生成塊,他包含編譯好的代碼邏輯單元。組成:它有描述它的程序集清單, 類型元數據, MSIL (微軟中間代碼,實現(xiàn)類型元數據的中間代碼)代碼和 資源 組成(2) 查看程序集:.Net 中提供一個反編譯 工具
25、 ILDasm 可以看到程序集中類和方法。具體步驟:在 Visual Studio 2005 的命令行窗口,輸入ILDasm.exe , 就可以打開反編譯器。無論是 類庫 (在類庫下生成的文件擴展名是.Dll , .dll 叫動態(tài)鏈接庫文件,包含的都是類文件)還是可執(zhí)行的EXE( .exe是 WinForms 下的文件的擴展名) 應用程序, 在我們創(chuàng)建一個Visual Studio項目時, 會自動生成一個源文件AssemblyInfo.cs, 在這個文件中可以使用一般的源代碼編輯器編輯程序集的特性。40. 什么叫應用程序域?應用程序域:就是為安全性,可靠性,隔離性,和版本控制,及卸載程序提供的
26、隔離邊界。它通常由運行庫宿主創(chuàng)建,運行庫宿主負責在運行應用程序之前引導公共語言運行庫。應用程序域提供了一個更安全,用途更廣的處理單元,公共語言運行庫可使用該單元提供應用程序之間的隔離。(簡單的:理解為一種輕量級進程;起到安全的作用;占用資源小)( 1) CTS、 CLS和 CLR分別作何解釋?CLR公共語言運行時( Common Language Runtime) 是所有 .NET應用程序的編程基礎, 是所有 .NET應用程序運行時環(huán)境。( 類似于 Java 中的JVM, Java 虛擬機)CLR包含兩個組成部分:CTS: 通用類型系統(tǒng)(Common Type System ) 用于解決不同語
27、言的數據類型不同問題,是一種確定公共語言運行庫如何定義、使用和管理類型的規(guī)范。CLS :公共語言規(guī)范(Common Language Specification ) 所有的 .NET語言都應該遵循這個規(guī)則,這樣才能創(chuàng)建與其他語言完全進行交互操作的應用程序, 不管這些對象是以何種語言實現(xiàn)的。 它是許多應用程序所需的一套基本語言功能2) 什么是托管代碼? 什么是受管制的代碼?A: 托管代碼:使用基于公共語言運行庫(CLR)的語言編譯器開發(fā)編寫的代碼就叫托管代碼。( CLR可以看作一個在執(zhí)行時管理代碼的代理,能夠被管理的代碼稱為:托管代碼。C#和 VB.NET都是公共語言運行時的托管代碼。) ; 托
28、管代碼的優(yōu)點:跨語言集成、跨語言異常處理、增強的安全性、版本控制和部署支持、簡化的組件交互模型、調試和分析服務等B : unsafe 非托管代碼: 不經過CLR運行,不能夠被管理的代碼。3)什么是強類型系統(tǒng)?RTTI:類型識別系統(tǒng)( C#是強類型語言,因此每個變量和對象都必須具有聲明類型)4) IL 是什么含義?IL,中間語言,也稱MSIL, 微軟中間語言,或CIL,通用中間語言;所有.NET源代碼(不管用哪種語言編寫)在進行編譯時都被編譯成IL 。在應用程序運行時被即時(Just-In-Time , JIT)編譯器處理成為機器碼,被解釋及執(zhí)行。.DotNET(.net) 是年比爾 .蓋茨提出
29、來的一個思想.DotNET FrameWork是微軟為了實現(xiàn).net 思想而造的一個框架(1) 公共語言運行時(CLR) (2) 類庫集 (FCL). 在類庫集(FCL) 中,包括了所有編寫.NET 程序時所要應用到的函數(方法). 公共語言運行時,是來運行編譯好的.NET 程序的.NET 程序必須是兩次編譯才可以運行. 第一次編譯后的.NET 程序,我們叫做中間語言(MSIL+ 元數據). 第二次編譯后,才能成為機器代碼,讓計算機識別并執(zhí)行。. 公共語言運行時,包括兩個部分,分別為CLS 及 CTS41什么是裝箱和拆箱?裝箱和拆箱使值類型能夠被視為對象。對值類型裝箱將把該值類型打包到Obje
30、ct 引用類型的一個實例中。這使得值類型可以存儲于垃圾回收堆中。拆箱將從對象中提取值類型。裝箱: 把值類型轉換為引用類型的過程,是隱式的拆箱: 從引用類型轉換到值類型,是顯式的裝箱操作:是將值類型轉換為object 類型的操作叫裝箱,例: int inti=1000;object obji = inti; / 裝箱的操作拆箱操作:是將object 類型轉換為其它類型的操作叫拆箱,例: int intj = (int)obji;/在拆箱的時候,必須將其拆為int 類型, 因為蘋果裝到箱子里后,是決不可能拆出葡萄的!42. 值類型和引用類型的區(qū)別?在C#中分為兩種基本類型,值類型,引用類型(1)
31、值類型的值和地址都是存放在堆棧中的,改變其值,不改變變量原有的值,而引用類型的值是存放在堆中的,其引用的地址是存放在棧中的,改變其值也就改變了變量原有的值。( 引用類型,值是存放在托管堆當中的,在堆棧當中存放的是其指向托管堆值的地址。)(2) 基于值類型的變量直接包含值。將一個值類型變量賦給另一個值類型變量時,將復制包含的值。這與引用類型變量的賦值不同,引用類型變量的賦值只復制對對象的引用,而不復制對象本身。所有的值類型均隱式派生自System.ValueType 。(3) 與引用類型不同,從值類型不可能派生出新的類型。但與引用類型相同的是,結構也可以實現(xiàn)接口。 與引用類型不同,值類型不可能包
32、含null 值。 然而, 可空類型功能允許將 null 賦給值類型。每種值類型均有一個隱式的默認構造函數來初始化該類型的默認值。(4) 值類型主要由兩類組成:結構、枚舉( enum ); 結構分為以下幾類:Numeric(數值)類型、整型、浮點型、decimal 、 bool 、用戶定義的結構; 用戶定義的值類型 引用類型分為:接口類型;指針類型;自我描述類型(類類型:委托,用戶定義的引用類型,封裝的值類型;數組)引用類型的變量又稱為對象,可存儲對實際數據的引用。A:聲明引用類型的關鍵字: class (類) inte*ce 、 delegate (委托)B:內置引用類型:object 、 s
33、tring (字符串類型)枚舉類型,一般應用于有限的變量,及有相同意義的變量的定義,格式enum DayMon=-1,Tue,Wed, Thu,Fri=2,Sat, Sun注意:枚舉類型是不能定義在方法里邊的,只能定義在類里邊或類的外邊。43 C# 種索引器實現(xiàn)過程,是否只能根據數字索引?答:不是的,可以是任意類型。44 談談 final,finally,finallize的區(qū)別 ?(1) final 修飾符(關鍵字)如果一個類被聲明為final ,意味著它不能再派生出新的子類,不能作為父類被繼承。因此一個類不能既被聲明為abstract的,又被聲明為final 的。被聲明為final 的變量
34、是一個常量,不可以改變。但是必須在聲明時給定初值,而在以后的引用中只能讀取,不可修改。(在 java 中聲明常量時加入該關鍵字,這樣可以增強程序的可讀性以及可維護性)被聲明為final 的方法在使用中不能被改變,不可以被覆蓋(重載),只能使用。(2) Finally 是異常處理語句結構中,表示總是執(zhí)行的部分。在異常處理時提供finally 塊來執(zhí)行任何清除操作。如果拋出一個異常,那么相匹配的catch 子句就會執(zhí)行,然后控制就會進入finally 塊(如果有的話)。(3) Finallize 表示是 object 類一個方法,在垃圾回收機制中執(zhí)行的時候會被調用被回收對象的方法。finalize
35、 方法名。Java 技術允許使用finalize() 方法在垃圾收集器將對像從內存中清除出去之前做必要的清理工作。這個方法是由垃圾收集器在確定這個對象沒有被引用時對這個對象調用的。它是在 Object 類中定義的, 因此所有的類都繼承了它。子類覆蓋finalize() 方法以整理系統(tǒng)資源或者執(zhí)行其他清理工作。finalize() 方法是在垃圾收集器刪除對像之前對這個對象調用的。45 . 是否可以繼承String 類。答: String 類是 final 類故不可以繼承。46 . 成員變量和成員函數前加static 的作用?它們被稱為常成員變量和常成員函數,又稱為類成員變量和類成員函數。分別用來
36、反映類的狀態(tài)。比如類成員變量可以用來統(tǒng)計類實例的數量,類成員函數負責這種統(tǒng)計的動作。47 .C#中property 與 attribute 的區(qū)別,他們各有什么用處,這種機制的好處在哪里?一個是屬性,用于存取類的字段,一個是特性,用來標識類,方法等的附加性質attribute:自定義屬性的類; property :類中的屬性48 .Anonymous Inner Class ( 匿名內部類) 是否可以extends(繼承)其它類,是否可以implements( 實現(xiàn) )interface( 接口 )?答:不能,可以實現(xiàn)接口49 .Static Nested Class 和 Inner Clas
37、s 的不同,說得越多越好答: Static Nested Class是被聲明為靜態(tài)( static) 的內部類,它可以不依賴于外部類實例被實例化。而通常的內部類需要在外部類實例化后才能實例化。50 .Overloaded 的方法是否可以改變返回值的類型?答: Overloaded 的方法是可以改變返回值的類型。集合 和 泛型集合集合: (1) ArrayList:數組列表:使用該類時要引入“System.Collections ”A : ArrayList 添加元素:Add (Object value) 如: students.Add(zhang);B : 存取 ArrayList 中的單個元
38、素:如:Student stu=(Student)students0;因為可在ArrayList 中存儲任何類型的對象,當添加到ArrayList 中時會轉換為Object類型, 所以在訪問這些元素時要轉換成本身的數據類型。如以上例子中,將獲取的元素強制轉換成他本身的的數據類型。C : 刪除 ArrayList 中的元素的三種方式:1. 通過 RemoveAt(int index) 方法刪除指定index (索引)的元素2. 通過Remove(Object value) 方法刪除一個指定對象名的元素3. 通過Clear() 方法一處集合中的所有的元素D : 遍歷 ArrayList 中的元素:
39、foreach 通過對象來訪問和 for 循環(huán)通過索引來訪問(2) HashTable:A: Add() 方法中有兩個參數,一個表示鍵,一個表示值,一一對應例如: Hashtable students = new Hashtable ();Student stu = new Student ( "hongyang" ,21, "開發(fā)軟件");Students.Add(stu.Name,stu);B:獲取元素:(通過鍵名來獲取具體值,不能通過索引來訪問元素)C:遍歷元素:(只能用foreach() 方法)D:刪除哈希表中的元素(通過Key,使用Remove
40、()方法刪除)泛型集合: A: List<T> 不需要類型轉換,可以遍歷整個對象,通過索引(下標)來訪問。B: Dictionary<K,V> 不需要類型轉換,遍歷的時候,遍歷對象的keys或者 values屬性,訪的時候通過key 值來取 value 值,不能通過索引(下標)來訪問。51. .HashMap 和 Hashtable 區(qū)別 ?HashMap是 Hashtable的輕量級實現(xiàn)(非線程安全的實現(xiàn)),他們都完成了Map接口,主要區(qū)別在于 HashMap允許空(null )鍵值(key) ,由于非線程安全,效率上可能高于Hashtable.52. . Colle
41、ction 和 Collections 的區(qū)別 ?Collection 是集合類的上級接口,Collections 是針對集合類的一個幫助類,它提供一系列靜態(tài)方法來實現(xiàn)對各種集合的搜索,排序,線程安全化操作。53. List, Set, Map 是否繼承自Collection 接口 ?答: List, Set是Map 不是54. 任何把一個Array 復制到 Arraylist 中 ?答: Foreach (object o in Array), ArrayList.Add (0)等有好多中種方法。自己想。55. Set 里的元素是不能重復的,那么用什么方法來區(qū)分重復與否呢? 是用 =還是 e
42、quals()? 它們有何區(qū)別 ?答:Set 里的元素是不能重復的,那么用iterator()方法來區(qū)分重復與否。equals()是判讀兩個Set是否相等。equals()和 =方法決定引用值是否指向同一對像equals()在類中被覆蓋,為的是當兩個分離的對象的內容和類型相配的話,返回真值。56. C# 中委托是什么?事件是不是一種委托?答:委托(delegate )是一種類似C+ 函數指針,但是她比指針要安全的多,是類型安全的。它可以把方法作為一個參數傳遞給另一個方法,可以理解為指向函數的引用。通俗理解:委托就是委托別人去做事情,要是同一類才能幫忙,在C#中,使用關鍵字:delegate 定
43、義一個委托方法,委托把方法使用參數來使用事件是一種消息機制,它是一種委托,委托不帶方法體。57. 如何理解委托?答 : 據說相當于函數指針, 定義了委托就可以在不調用原方法名稱的情況下調用那個方法.msdn2005中是這樣解釋的:委托具有以下特點:委托類似于C+ 函數指針,但它是類型安全的。委托允許將方法作為參數進行傳遞。委托可用于定義回調方法。委托可以鏈接在一起;例如,可以對一個事件調用多個方法。方法不需要與委托簽名精確匹配。有關更多信息,請參見協(xié)變和逆變。C# 2.0 版引入了匿名方法的概念,此類方法允許將代碼塊作為參數傳遞,以代替單獨定義的方法。根據委托(delegate)的知識,請完成以下用戶控件中代碼片段的填寫:(10)namespace testpublic delegate void OnDBOperate(); /委托public class UserControlBase : System.Windows.Forms.UserControl public event OnDBOperat
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度水利工程施工合同示范文本(含安全要求)4篇
- 2022版義務教育體育與健康課程標準試卷
- 2024配電室設備安裝及調試服務合同2篇
- 2024錨具供貨合同
- 2024年高端人才招聘居間服務合同書3篇
- 2025年0號柴油油品認證居間服務協(xié)議3篇
- 2025年度生態(tài)大門研發(fā)與安裝服務合同范本4篇
- 2025年度特色烹飪技藝傳承廚師雇傭協(xié)議4篇
- 深圳房地產中介培訓課件制作專業(yè)
- 2025年度旅游觀光車租賃合同標的轉讓協(xié)議3篇
- 不同茶葉的沖泡方法
- 光伏發(fā)電并網申辦具體流程
- 基本藥物制度政策培訓課件
- 2025年中國華能集團限公司校園招聘高頻重點提升(共500題)附帶答案詳解
- 建筑勞務專業(yè)分包合同范本(2025年)
- GB/T 45002-2024水泥膠砂保水率測定方法
- 廣東省廣州海珠區(qū)2023-2024學年八年級上學期期末數學試卷(含答案)
- 飛行原理(第二版) 課件 第10章 高速空氣動力學基礎
- 廣西《乳腺X射線數字化體層攝影診療技術操作規(guī)范》
- 山西省2024年中考道德與法治真題試卷(含答案)
- 五年(2020-2024)高考地理真題分類匯編(全國版)專題12區(qū)域發(fā)展解析版
評論
0/150
提交評論