1.接口的特點(diǎn)是什么?什么情況下應(yīng)用?
接口的作用就是定義規(guī)范,定義了要求繼承于它的類必須實(shí)現(xiàn)的屬性或方法。
C#中,一個(gè)類只能有一個(gè)父類,但是可以多個(gè)父接口;
接口是方法的抽象,如果不同的類有同樣的方法,那么就應(yīng)該考慮使用接口。
2.面向?qū)ο蟮恼Z言具有________性、_________性、________性。
繼承性、封裝性、多態(tài)性。
3.簡述 private、 protected、 public、 internal 修飾符的訪問權(quán)限?
private : 私有成員, 在類的內(nèi)部才可以訪問。
protected : 保護(hù)成員,該類內(nèi)部和繼承類中可以訪問。
public : 公共成員,完全公開,沒有訪問限制。
internal: 在同一命名空間內(nèi)可以訪問。
4. .Net與Java的對比,.Net安全嗎(說出為什么)?
對比: Java .Net
( 跨平臺 ) JDK .Net Framework
OS OS
C#代碼 編譯器 MSIL CLR 平臺專用代碼
5.重載與構(gòu)造函數(shù)的用法(舉例說明)?
參數(shù)不同的重載。
參數(shù)個(gè)數(shù)不同的重載。(注:兩種只是返回類型不同的方法不能重載)
構(gòu)造函數(shù)是一種特殊的成員函數(shù),它主要用于為對象分配存儲空間,對數(shù)據(jù)成員進(jìn)行初始化.
構(gòu)造函數(shù)的名字必須與類同名;
構(gòu)造函數(shù)沒有返回類型,它可以帶參數(shù),也可以不帶參數(shù);
構(gòu)造函數(shù)的主要作用是完成對類的初始化工作;
在創(chuàng)建一個(gè)類的新對象(使用new關(guān)鍵字)時(shí),系統(tǒng)會自動(dòng)調(diào)用給類的構(gòu)造函數(shù)初始化新對象;
6.抽象類和抽象方法(含義與注意事項(xiàng))?
抽象類:含有一個(gè)或多個(gè)抽象方法的類稱為抽象類,在聲明時(shí),類名前須添加“abstract”關(guān)鍵字
抽象方法:只包含方法定義,但沒有具體實(shí)現(xiàn)的方法,需要其子類或者子類的子類來具體實(shí)現(xiàn)。
抽象方法必須寫在抽象類當(dāng)中
抽象方法中不能有方法體
子類繼承抽象父類后,使用override關(guān)鍵字覆蓋父類中的抽象方法,并做具體的實(shí)現(xiàn)。
抽象類不能是靜態(tài)或者密封的
抽象類不能被實(shí)例化,這是因?yàn)樗藳]有具體實(shí)現(xiàn)的方法
子類繼承抽象父類后,可以使用override關(guān)鍵字覆蓋父類中的抽象方法,并做具體的實(shí)現(xiàn)。也可以不實(shí)現(xiàn)抽象方法,留給后代實(shí)現(xiàn),這時(shí)子類仍舊是一個(gè)抽象類,必須聲明為abstract 。
抽象方法和抽象類必須用abstract聲明
7. 什么情況下使用虛方法及關(guān)鍵字?
具體方法能否重寫。
virtual
8.虛方法抽象方法的區(qū)別?
虛方法 抽象方法
用virtual修飾 用abstract
要有方法體 不允許有方法體
可以被子類重寫 必須被子類重寫
除了密封類外都可以 只能在抽象類中
9.抽象類與接口的區(qū)別?
抽象類 接口
不同點(diǎn) 用abstract定義 用interface定義
只能繼承一個(gè)類 可以實(shí)現(xiàn)多個(gè)接口
非抽象派生類必須實(shí)現(xiàn)抽象方法 實(shí)現(xiàn)接口的類必須實(shí)現(xiàn)所有的成員
需要override實(shí)現(xiàn)抽象方法 直接實(shí)現(xiàn)
相似點(diǎn) 不能被實(shí)例化
包含未實(shí)現(xiàn)的方法
派生類必須實(shí)現(xiàn)未實(shí)現(xiàn)的方法
10.你認(rèn)為泛型最大得優(yōu)點(diǎn)在那及關(guān)鍵字?
安全。不用裝、拆箱。
注:泛型集合可以作為類中的一個(gè)屬性。使用泛型集合必須實(shí)例化
泛型集合List<T>
泛型集合Dictionary<k,v>
11.文件讀寫創(chuàng)建與序列化反序列化的區(qū)別(僅限代碼)?
(序)二進(jìn)制
BinaryFormatter bf=new BinaryFormatter();
bf.Serialize(fileSteram,Profile);
(文)創(chuàng)建讀寫器
Streamwriter bf=new Streamwriter(fileSteram);
bf.write(contemt);
12.看代碼回答。
public class A5
{
public virtual void MethodA()
{
Console.WriteLine("A5.MethodA");
Console.Read();
}
public virtual void MethodB()
{
MethodA();
}
}
public class B5 : A5
{
public new void MethodA()
{
Console.WriteLine("B5.MethodA");
Console.Read();
}
}
public class virtul5test
{
public static void run()
{
B5 a = new B5();
a.MethodB(); //顯示A5.MethodA
}
}
a.MethodB()不是調(diào)用B5中的繼承MethodA而來的方法么,而B5中的MethodA不是隱藏A5中的MethodA了么,結(jié)果怎么不是B5.MethodA?
因?yàn)槟闶褂玫氖?/span> new 覆蓋,而不是使用 override 重寫!
關(guān)鍵就在于那個(gè) new 關(guān)鍵字,如果把 new 換成 override,結(jié)果就是 B5.MethodA
所謂繼承,是先查找派生類中有沒有重寫方法,如果有,則調(diào)用派生類中重寫后的方法,否則調(diào)用基類的方法。所以你這里 a.MethodB(),調(diào)的是 base.MethodB(),然后又調(diào)用 MethodA,B5 沒有重寫基類的 MethodA ,所以就顯示 A5.MethodA 了。
13.程序設(shè)計(jì): 貓大叫一聲,所有的老鼠都開始逃跑,主人被驚醒.
1. 聯(lián)動(dòng)效果,運(yùn)行代碼只要執(zhí)行Cat.Cryed()方法。
2. 對老鼠和主人進(jìn)行抽象
<1>.構(gòu)造出Cat、Mouse、Master三個(gè)類,并能使程序運(yùn)行
<2>從Mouse和Master中提取抽象
<3>聯(lián)動(dòng)效應(yīng),只要執(zhí)行Cat.Cryed()就可以使老鼠逃跑,主人驚醒。
public interface Observer
{
void Response(); //觀察者的響應(yīng),如是老鼠見到貓的反映
}
public interface Subject
{
void AimAt(Observer obs); //針對哪些觀察者,這里指貓的要撲捉的對象---老鼠
}
public class Mouse : Observer
{
private string name;
public Mouse(string name, Subject subj)
{
this.name = name;
subj.AimAt(this);
}
public void Response()
{
Console.WriteLine(name + " attempt to escape!");
}
}
public class Master : Observer
{
public Master(Subject subj)
{
subj.AimAt(this);
}
public void Response()
{
Console.WriteLine("Host waken!");
}
}
public class Cat : Subject
{
private ArrayList observers;
public Cat()
{
this.observers = new ArrayList();
}
public void AimAt(Observer obs)
{
this.observers.Add(obs);
}
public void Cry()
{
Console.WriteLine("Cat cryed!");
foreach (Observer obs in this.observers)
{
obs.Response();
}
}
}
class MainClass
{
static void Main(string[] args)
{
Cat cat = new Cat();
Mouse mouse1 = new Mouse("mouse1", cat);
Mouse mouse2 = new Mouse("mouse2", cat);
Master master = new Master(cat);
cat.Cry();
}
}
口述:
14.你對類和對象的理解?簡單工廠的理解? 10
15.在你印象中組長的形象好嗎?有能力領(lǐng)導(dǎo)這個(gè)組嗎?缺陷在那里?10
16.你最討厭的人有困難你會給以幫助嗎?10