C#面向對象編程習習題_第1頁
C#面向對象編程習習題_第2頁
C#面向對象編程習習題_第3頁
C#面向對象編程習習題_第4頁
C#面向對象編程習習題_第5頁
已閱讀5頁,還剩11頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、C#面向對象編程-多態(tài)1C#中的方法重寫使用關鍵字()。a) overrideb) overloadc) staticd) inherit2以下的C#代碼,試圖用來定義一個接口:public interface IFileint A;int delFile()A = 3;void disFile();關于以上的代碼,以下描述錯誤的是()。(選擇一項)a) 以上的代碼中存在的錯誤包括:不能在接口中定義變量,所以int A代碼行將出現錯誤b) 以上的代碼中存在的錯誤包括:接口方法delFile是不允許實現的,所以不能編寫具體的實現函數c) 代碼void disFile();定義無錯誤,接口可以沒有

2、返回值d) 代碼void disFile();應該編寫為void disFile();3在C#中,接口與抽象基類的區(qū)別在于()。a) 抽象基類可以包含非抽象方法,而接口只能包含抽象方法b) 抽象基類可以被實例化,而接口不能被實例化c) 抽象基類不能被實例化,而接口可以被實例化d) 抽象基類就是接口,它們之間無差別4在開發(fā)某圖書館的圖書信息管理系統的過程中,開始為教材類圖書建立一個TextBook類;現在又增加了雜志類圖書,于是需要改變設計,則下面最好的設計應該是()。a) 建立一個新的雜志類Journal。b) 建立一個新的雜志類Journal,并繼承TextBoook類。c) 建立一個基類B

3、ook和一個新的雜志類Journal,并讓Journal類和TextBoook類都繼承于Book類。d) 不建立任何類,把雜志圖書的某些特殊屬性加到TextBoook類中。5可以使用()關鍵字重寫方法。a) Overrideb) New6()可以看作類的模具。A. 抽象類B. 接口C. 虛方法7以下敘述正確的是:() A接口中可以有虛方法。 B.一個類可以實現多個接口。 C接口不能被實例化。 D.接口中可以包含已實現的方法。8.下列代碼輸出為( ):class Father public void F() (""); public virtual void G() (&qu

4、ot;"); class Son: Father new public void F() (""); public override void G() (""); class override_new static void Main() Son b = new Son(); Father a = b; (); (); (); (); A. B. C. D. 9寫出程序的輸出結果: public class Apublic virtual void Fun1(int i)(i);public void Fun2(A a)(1);Fun1(5);

5、public class B:Apublic override void Fun1(int i)(i+1);public static void Main()B b=new B();A a=new A();(b);(a);10在C中,允許多接口繼承,從多個接口時,使用“:”后跟繼承的接口的名字,多個接口名稱之間使用()符號進行分割。(選擇一項) a)”.b)”->”c)”,”d)”:”11在.NET中,關于組件多態(tài)性的陳述,下面除了( )都是正確的。(選擇一項)a可以通過接口實現多態(tài)性b可以通過抽象類實現多態(tài)性c多態(tài)性不只是重載或重寫,而是智能重寫d在多態(tài)性中,需要調用哪個方法的決定是在

6、設計時做出的12多態(tài)性允許對類的某個方法進行調用而無需考慮該方法所提供的特定實現,例如,可能有名為了Road的類,它調用另一個類的Drive方法,另一個類可能是SportsCar 或SmallCar,但二者都提供Drive方法,雖然Drive 方法的實現因類的不同而異,但Road 類仍可以調用它,并且它提供的結果可由Road 類使用和解釋。在 .NET 中,可以由以下的方式來實現組件中多態(tài)性,除了()。(選擇一項)a) 通過接口實現多態(tài)性b) 通過多個不同的子類從單個基類繼承實現多態(tài)c) 通過抽象類實現多態(tài)性d) 通過受保護的成員函數來實現多態(tài)性13閱讀以下的C#代碼:class Apubli

7、c abstract void printStr(string str)(str);class B:Apublic override void printStr(string str)str=str+"(重寫的方法)"(str);class DefaultInitializerApppublic static void Main()B b=new B();A a=b;("打印");("打印");();運行程序后將在控制臺窗口打印( )。(選擇一項)a. 打印 重寫的方法b. 打印 打印 重寫的方法c. 打印d. 程序有誤,不能運行14

8、在C#的語法中,()關鍵字可以實現在派生類中對基類的虛函數進行重載(選一項)a> overrideb> newc> staticd> virtual15對下面的C # 程序:using System;public interface IAccountvoid PosInterest();void DeductFees(int feeSchedule); class BusinessAccount : IAccountint A;public static void Main()BusinessAccount B = new BusinessAccount();();pu

9、blic void ()A = A+1;public void (int feeSchedule)A = A + feeSchedule;以下的說法正確的是 ( )(選擇一項)a)程序將出現編譯錯誤,指示不能在實現接口BusinessAccount的類中定義成員 A.b)程序將出現編譯錯誤,指示Public關鍵字對接口項無效c) 程序編譯正常,但是出現運行時錯誤,指示變量A沒有初始化d)程序將正常運行,輸出為016.可以使用()關鍵字重寫方法。A. OverrideB. new17.()可以看作類的模具。A. 抽象類B. 接口C. 虛方法18.請問,此程序輸出結果是()abstract cla

10、ss BaseClasspublic virtual void MethodA()("BaseClass");public virtual void MethodB()class Class1: BaseClasspublic void MethodA()("Class1");public override void MethodB()class Class2: Class1new public void MethodB()class MainClasspublic static void Main(string args)Class2 o = new

11、Class2();(); A. BaseClassB. BassClass Class1C. Class1D. Class1 BassClass19.請問,此程序輸出結果是()public abstract class A public A() ('A'); public virtual void Fun() ("()"); public class B: A public B() ('B'); public new void Fun() ("()"); public static void Main() A a = ne

12、w B();(); A. A B () B. A B ()C. B A ()D. B A ()20.以下敘述正確的是(): A. 接口中可以有虛方法。   B. 一個類可以實現多個接口。 C. 接口不能被實例化。       D. 接口中可以包含已實現的方法。21以下關于C#代碼的說法正確的是()。(選擇一項)Public abstract AnimalPublic abstract void Eat();Public void Sleep()a. 該段代碼正確b. 代碼錯誤,因為類中存在非抽象方法c.

13、代碼錯誤,因為類中的方法沒有實現d. 通過代碼“Animal an = new Animal();”可以創(chuàng)建一個Animal對象22.在c#中,關于繼承和接口,以下說法正確的是() (單選)a. c#允許許多接口實現,也允許多重繼承#允許多接口實現,但不允許多重繼承#不允許多接口實現,但允許多重繼承#不允許多重接口實現,也不允許多重繼承23) 在C#中,已知下列代碼的運行結果是“老虎吃動物”,請問在空白處1和空白處2分別應該填寫的代碼是()Public class AnimalPublic 空白處1 void Eat()(“我要吃”);Public class Tiger:AnimalPubl

14、ic 空白處2 void Eat()(“老虎吃動物”);Public calssTestStatic void Main()Animal an = new Tiger();a) Virtual , newb) override , virtualc) virtual , overrided) new , virtual24) 在C#中,下列關于抽象類和接口的說法,正確的是)()(選擇一項)a) 在抽象類中,所以的方法都是抽象方法b) 繼承自抽象類的子類必須實現起父類(抽象類)中的所以抽象方法c) 在接口中,可以有方法實現,在抽象類中不能有方法實現d) 一個類可以從多個接口繼承,也可以從多個抽象

15、類繼承25) 關于以下C#代碼的說法正確的是()Public abstract class AnimalPublic abstract void Eat();Public class Tiger:AnimalPublic override void Eat()(“老虎吃動物”);Public class Tigress:TigerStatic void main()Tigress tiger=new Tigress();();a) 代碼正確,但沒有輸出b) 代碼正確,并且輸出為”老虎吃動物”;c) 代碼錯誤,因為Tigress類沒有實現抽象基類Animal中的抽象方法d) 代碼錯誤,因為抽象基

16、類Animal的Eat方法沒有實現26) 在c#中 某程序員定義了一個IDataBase接口,以及實現該接口的類CDataBase ,下列關于該段代碼說法正確的是()(選擇一項)public interface IDataBasevoid OpenTable(string tableName);void UpDataTable(string tableName);public class CDataBase:IDataBasepublic void OpenTable(string tableName)("打開數據表");public void UpdataTable(st

17、ring tableName)("更新數據表");static void Main()CDataBase db = new CDataBase();("Customers");a)該段代碼錯誤,因為在定義接口時,接口中的方法沒有提供實現b)該段代碼錯誤,因為接口中聲明的方法不是公有的,應此在CDataBase類中不能訪問接口中的方法c)該段代碼正確,同時由于客戶沒有調用UpdataTable方法,可以把CDataTable類中的UpdataTable去掉,代碼仍然正確d)該段代碼正確,但是如果在IDataBase 接口中聲明一個方法void Execut

18、e(string sql); 則必須在CDataBase中實現該方法#中 下列代碼運行結果是()(選擇一項)public class Studentpublic virtual void Exam()("學生都要考試");public class Undergraduate:Studentpublic new void Exam()();("大學生有選擇考試科目的權利");public class Teststatic void Main()Student stu = new Undergraduate();();a)學生都要考試b)大學生有選擇考試科目

19、的權利c)大學生都要考試 大學生有選擇考試科目的權利d)學生都要考試學生都要考試28)c#中 下列代碼的運行結果是()(選擇一項)struct Studentpublic int age;public string name;public Student(int age,string name)=age;=name;public class Teststatic void Mian()Student stu1= new Student(18,"小方");Student stu2= new Student(24,"小剛");stu2=stu1;=30;=&

20、quot;小燕"a)18 小方b)18 小燕c)30 小燕d)30 小方29)在C#中,下列()關鍵字用于重寫基類的虛擬方法。(選擇一項)a)overrideb)newc)based)virtual委托和事件C#面向對象編程-委托和事件  1閱讀以下C#代碼 Namespace tevent  public delegate void notify5();  class eventTest       pu

21、blic void Raise5(int I)          if(I%3=1)         Got5(); public event notify5 Got5; class Handlers         public static

22、60;void Method1()           ("時間處理完成");       class class10         static void Main(String args)        

23、   eventTest eObj=new eventTest();      +=new notify5;      for(int cnt=0;cnt<5;cnt+)             int y=cnt*2+1;      

24、; (y);         ();      代碼允許的結果為()。 A)控制臺窗口不能出任何信息。 B)在控制臺窗口輸出“時間處理完成”1次 C)在控制臺窗口輸出“時間處理完成”2次 D)在控制臺窗口輸出“時間處理完成”5次2.聲明一個委托public delegate int myCallBack(int x); 則用該委托產生的回調方法的原型應該是(

25、) A. void myCallBack(int x) B. int receive(int num) C. string receive(int x) D. 不確定的#中,關于事件的定義正確的是()。 a)private event OnClick();   b)private event OnClick; c)public delegate void&#

26、160;Click();public event Click void OnClick();   d)public delegate void Click();public event Click OnClick4. 在C#中,下列代碼的運行結果是(). Public delegate void BuyTicketDelegate(string num); Public class

27、60;Student  Public event BuyTicketDelegate btEvent; Public Student(string num)  btEvent+= new BuyTicketDelegate; Public void ShowNum(string num)  btEvent(num);  Private void BuyTicket(string

28、 num)  (“我要買”+num+”次車票”); Static void Main()  (“創(chuàng)建學生對象”); Student stu = new Student(“TI”); (“創(chuàng)建完畢”); (“TI”); a) 創(chuàng)建學生對象   創(chuàng)建完畢 b) 創(chuàng)建學生對象   我要買TI次車票  創(chuàng)建完畢 c) 

29、;創(chuàng)建學生對象   創(chuàng)建完畢     我要買TI次車票 d) 我要買TI次車票     創(chuàng)建學生對象     創(chuàng)建完畢C#面向對象編程-封裝1C#語言使用()來引入名稱空間。a) Importb) Usingc) Included) Lib2在.NET中,以下關于命名空間的描述,正確的是().(選擇一項)a) 命名空間不可以進行嵌套b) 在一個.cs文件中,只能存在一個命名空間c) 使用priva

30、te修飾的命名空間,其內部的類也不允許訪問d) 命名空間使得代碼更加有條理、結構更清晰3在C#類中( ) 選一項a) 允許有多個相同名稱的構造函數b) 允許有多個不同名稱的構造函數c) 至少要有一個構造函數d) 只能有一個構造函數4在C#中,可以直接在名稱空間內聲明如下類型,除了()A)數組B)接口C)結構D)委托5C#程序中的類myClass中的成員變量var1如下:public class myClass private int var1;則可以訪問var1的有()。(選擇一項)a) myClass中包含的類b) myClass的繼承類c) myClass的父類d) 和myClass在同一

31、命名空間下的類6下列關于類方法的聲明,正確的是()(選擇兩項)a) 方法定義類所許可的行動b) 從一個類創(chuàng)建的所有對象可以使用同一組屬性和方法c) 每個方法應該有一個參數d) 如果在不同類中定義了類似的操作,剛他們的行為不應該是類似的7析構函數的語法是()semester()B.錯8C#類中的構造函數的特點是( )選一項a) 一個類中,只能有一個構造函數b) 構造函數的名稱與類名一樣c) 構造函數在對象銷毀時自動執(zhí)行d) 要求構造函數至少有兩個參數9針對以下C#代碼 Using System; Public class Teacher Public string teacherName; Pu

32、blic string teacherSubject; Public Teacher(String name) =name; Public Teacher(String subject) = subject; Public Teacher(String name, String subject) =name; = subject; 以下說法正確的是()(選擇一項)A)上述代碼編譯無錯誤,類中存在三個構造函數B)上述代碼編譯有錯誤,因為類中只能有一個構造函數C)上述代碼編譯有錯誤,因為類中有兩個具有相同參數類型的構造函數D)上述代碼編譯有錯誤,以為類中沒有不帶參數的構造函數10閱讀以下的C#代碼

33、:Namespace t3_6Namespace FordPublic class MustangPublic void printMust()(“In namespace Ford”);class Class1static void Main(string args)Mustang must1=new Mustang();();();代碼運行結果為(D)。(選擇一項)a. 什么都不顯示b. 在控制臺打印”In namespace Ford”,用戶輸入任何數據退出c. 在控制臺打印”In namespace Ford”,立即退出d. 提示代碼有錯誤,不能執(zhí)行11以下的C#代碼段,使用了using別名指令:Using T(1) Main關鍵字是類型和類型成員的訪問修飾符。(D)內部成員只有在同一程序集中的文件內才是可訪問的。A. public 14.下列哪些說法是錯誤的()A. 抽象類可以實例化。B. 不可以改變常量的值.C. 可以使用 this 引用靜態(tài)方法或屬性訪問器.D. readonly 變量只能在構造函數中賦值.E. 一個父類的private 成員可以在子類中直接調用.15.請問,的值是多少()class Class1pub

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論