/////////////////////////2016-11-7//////////////////////////
int test(){
1.請說明一個JAVA類中主要包含哪幾個元素?并說明每種元素的作用。
? ? JAVA類中主要包含屬性、方法、構(gòu)造方法、塊以及內(nèi)部類。屬性用來定義對象的數(shù)據(jù);方法用來定義對象的行為;構(gòu)造方法可以用來創(chuàng)建對象;塊能夠用來在類加載時執(zhí)行操作或者在每次實例化前執(zhí)行通用操作;內(nèi)部類作為類的一個成員存在,能夠訪問外部類的屬性和方法。
2.請說明構(gòu)造方法的作用和特征
? ? 構(gòu)造方法的作用是用來創(chuàng)建對象,使用new關(guān)鍵字調(diào)用。構(gòu)造方法的名字必須與類的名字相同,并且大小寫敏感,同時構(gòu)造方法不能聲明返回值類型,可以使用任意一種訪問修飾符,但是不能使用其他修飾符進行修飾,如static、final、abstract等修飾符都不可以修飾構(gòu)造方法。
3.請列舉Java語言中的權(quán)限訪問修飾符,并說明每種權(quán)限的含義。
下表為Java訪問控制符的含義和使用情況
? ? ? ? ? ? ? ? ? ? ? ? ? 類內(nèi)部 ? ??本包內(nèi)? ? 類 ? ?外部包
?public ? ? ? ? ? ? ? ? ?√ ? ? ? ? ? ? ?√ ? ? ? ? ??√ ? ? ? ? ?√
protected ? ? ? ? ? ?√ ? ? ? ? ? ? ?√ ? ? ? ? ??√ ? ? ? ? ?×
default(默認)?√ ? ? ? ? ? ? ?√ ? ? ? ? ??× ? ? ? ? ?×
private ? ? ? ? ? ? ? ?√ ? ? ? ? ? ? ?× ? ? ? ? ? ?× ? ? ? ? ?×
4.什么叫引用類型,引用類型和基本數(shù)據(jù)類型有什么區(qū)別?
? ? ?Java語言中除了基本數(shù)據(jù)類型之外的類型,都稱為引用類型。引用類型就是類的類型,所有的對象都是引用類型,包括數(shù)組對象。引用類型必須使用new調(diào)用構(gòu)造方法進行賦值,引用類型的變量擁有自己的屬性和方法,可以使用圓點調(diào)用自己的屬性和方法。基本數(shù)據(jù)類型直接使用=號進行賦值,且沒有自己的屬性和方法,往往都在聲明屬性或方法時使用。
5.請說明Java語言中的值傳遞規(guī)則。
? ? ?基本數(shù)據(jù)類型傳遞的是值,引用類型傳遞的是引用,即虛地址。
6.使用static修飾屬性或方法后,屬性和方法有什么特征?
? ? ?static修飾屬性或方法后,屬性和方法不在屬于某個特定的對象,而是所有共享,也可以說是static成員不依賴某個對象,在類加載時就被初始化。Static修飾的屬性或方法,可以直接使用類名調(diào)用,而不用先實例化對象再調(diào)用。
7.使用final修飾屬性后,屬性有什么特征?
? ? ?fianl修飾屬性后,屬性就成為一個常量。常量只要被賦值,就不能被改變。
8.繼承有什么作用,Java語言中的繼承有什么特點?
? ? ?繼承主要為了能夠重復使用父類中的成員。Java語言中的繼承是單繼承,也就是說一個類最多只能繼承一個父類。
9.什么是方法覆蓋(override)?并說明方法覆蓋與方法重載(overload)的區(qū)別。
? ? ?覆蓋是發(fā)生在繼承關(guān)系的子類中,當子類要修改從父類繼承的某個方法的方法體時,就可以在子類中聲明一個與父類同名、同參數(shù)并且同返回值類型的方法,這就是方法覆蓋。而重載與繼承沒有關(guān)系,指的是在一個類中可以同時聲明多個同名但不同參數(shù)的方法,稱為重載。
10.請說明什么是抽象類?抽象類有什么作用?
? ? ?抽象類是不能實例化的類,使用abstract修飾。抽象類往往用來做父類使用,定義一些子類的共同屬性或行為。
11.請說明抽象方法的含義,并說明抽象類與抽象方法的關(guān)系。
? ? ?抽象方法是沒有方法體的方法,使用abstract修飾。抽象類中不一定有抽象方法,但是有抽象方法的類一定是抽象類。
12.說明super關(guān)鍵字的兩種用法。
? ? ? super():表示調(diào)用父類中的構(gòu)造方法:又如super(10);表示調(diào)用父類中的具有一個整型參數(shù)的構(gòu)造方法。第二種用法是在子類中調(diào)用父類中的成員,如super.f();意思是調(diào)用父類中的f()方法。
13.說明什么情況下使用this關(guān)鍵詞?
? ? ?第一種情況是當我們想要調(diào)用當前對象的屬性或者方法時候,可以通過this關(guān)鍵字來調(diào)用;第二種情況是當我們想調(diào)用當前對象的其它構(gòu)造函數(shù)的時候,可以使用this關(guān)鍵字
14.final類與final方法有什么作用?
? ? ?final類是不能夠被繼承的類,稱為終極類,如String類就是final類,不能有子類。final修飾方法后,是終極方法,不能被子類覆蓋,但是可以被子類繼承使用。
15.簡要說明Object類有什么特點?
? ? ?Object類是所有類的直接或間接的父類。
16.Object類中的toString方法有什么用?
? ? ?toString方法可以把對象作為字符串返回。
17.簡要說明Object類中的equals方法和hashCode方法。
? ? ?Object類中的equals方法用來比較兩個引用值,hashCode用來返回引用的內(nèi)地址的十六進制數(shù)值。在Set以及Map集合中,判斷兩個元素是否重復時,往往需要使用這兩個方法。這兩個方法往往被子類覆蓋,覆蓋的規(guī)則是:如果存在x和y兩個對象,調(diào)用x.equals(y)返回true時,那么調(diào)用hashCode方法的返回值也該相同;如果x.equals(y)返回false時,那么調(diào)用hashCode方法返回的值可能相同,也可能不同。
18.接口有什么特點,與抽象類有什么區(qū)別?
? ? ?接口的特點是不能定義變量,而且所有方法都是抽象方法。而抽象類中可以有變量,也不強制必須有抽象方法。
19.類繼承父類與類實現(xiàn)接口,有什么區(qū)別?
? ? ?類繼承父類只是單繼承,也就是一個子類最多只有一個父類;而類實現(xiàn)接口可以多實現(xiàn),
就是一個子類可以同時實現(xiàn)多個接口,并覆蓋所有接口中的所有抽象方法。
20.組合和繼承各有什么特點?什么情況下使用組合,什么情況下使用繼承?
? ? ?繼承,父類與子類之間存在is-a的關(guān)系,子類可以調(diào)用父類的方法,創(chuàng)建子類時,無需再創(chuàng)建父類;組合體現(xiàn)的是整體與部分,擁有關(guān)系,即has-a的關(guān)系,是通過對現(xiàn)有的對象進行拼裝(組合)產(chǎn)生新的、復雜的功能.因為組合更加安全、靈活、高效,所以在同等情況下,推薦使用組合。
21.說出至少3中Java面向?qū)ο蟮脑O(shè)計原則
1.單一職責原則
2.里氏替換原則
2.依賴倒置原則
4.接口隔離原則
5.迪米特法則
6.開閉原則
7.組合/聚合復用原則
22.說出3個你了解的設(shè)計模式,并用一兩句話描述模式的應用場景
1.工廠方法模式:創(chuàng)建一個工廠類,對實現(xiàn)了同一接口的一些類進行實例的創(chuàng)建。
2.單例模式:保證一個對象在整個程序中只有一個實例存在。
3.適配器模式:將某一個類的接口轉(zhuǎn)換成客戶端期望的另一個接口表示,目的是消除兼容問題。
4.代理模式:創(chuàng)建一個代理類,替原對象進行一些操作。
5.觀察者模式:當一個對象發(fā)生變化時,其它依賴該對象的對象會接收到通知。
6.迭代子模式:順序訪問聚集中的對象。
7.命令模式:使命令的發(fā)出者和執(zhí)行者之間解藕,實現(xiàn)請求和執(zhí)行分開。
}