freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

張孝祥java就業(yè)面試題大全20xx0602版本-資料下載頁(yè)

2025-08-14 21:35本頁(yè)面

【導(dǎo)讀】苦我們這些老師了,學(xué)員紛紛把他們面試和工作中的要解決的問(wèn)題帶回來(lái)讓我們老師幫助做,工作交給我們老師替他去干了,可不是一句話兩句話就解決的問(wèn)題。有很繁重的備課和教學(xué)任務(wù),我們的工作請(qǐng)誰(shuí)來(lái)幫助做呢?同學(xué)們似乎沒(méi)有替我們想過(guò)這個(gè)?!昂芎?jiǎn)單的,頂多占用你一個(gè)小時(shí)就搞定了!”,這么簡(jiǎn)單,你為何自己不干???腦了,你叫我怎么辦啊?我們這批老師成了這些公司免費(fèi)使用的超級(jí)勞工。歷和錄用新員工的。職,投遞了很多份簡(jiǎn)歷,都沒(méi)有回應(yīng);而他周?chē)暮芏嘞嗨票尘暗膶W(xué)員因?yàn)槭褂昧思俸?jiǎn)歷,我用一個(gè)大餅的故事來(lái)說(shuō)明這個(gè)問(wèn)題吧,假如市場(chǎng)上賣(mài)的大餅都是10. 意買(mǎi),但是,一旦我告訴你,我這個(gè)大餅的原材料才5毛錢(qián),你心里還會(huì)平衡嗎?太黑,5毛錢(qián)的成本居然賣(mài)出10元的暴利,你不會(huì)買(mǎi)我的大餅,因?yàn)檫@超出了你的心理承受,元買(mǎi)人家的大餅,還不如買(mǎi)我這個(gè)大餅好吃!戰(zhàn)術(shù)和時(shí)間糾纏,做這種項(xiàng)目的程序員工作都很辛苦,經(jīng)常要加班加點(diǎn)。

  

【正文】 把對(duì)同一事物進(jìn)行操作的方法和相關(guān)的方法放在同一個(gè)類(lèi)中,把方法和它操作的數(shù)據(jù)放在同一個(gè)類(lèi)中。 例如,人要在黑板上畫(huà)圓,這一共涉及三個(gè)對(duì)象:人、黑板、圓,畫(huà)圓的方法要分配給哪個(gè)對(duì)象呢?由于畫(huà)圓需要使用到圓心和半徑,圓心和半徑顯然是圓的屬性,如果將它們?cè)陬?lèi)中定義成了私有的成員變量,那么,畫(huà)圓的方法必須分配給圓,它 才能訪問(wèn)到圓心和半徑這兩個(gè)屬性,人以后只是調(diào)用圓的畫(huà)圓方法、表示給圓發(fā)給消息而已,畫(huà)圓這個(gè)方法不應(yīng)該分配在人這個(gè)對(duì)象上,這就是面向?qū)ο蟮姆庋b性,即將對(duì)象封裝成一個(gè)高度自治和相對(duì)封閉的個(gè)體,對(duì)象狀態(tài)(屬性)由這個(gè)對(duì)象自己的行為(方法)來(lái)讀取和改變。一個(gè)更便于理解的例子就是,司機(jī)將火車(chē)剎住了,剎車(chē)的動(dòng)作是分配給司機(jī),還是分配給火車(chē),顯然,應(yīng)該分配給火車(chē),因?yàn)樗緳C(jī)自身是不可能有那么大的力氣將一個(gè)火車(chē)給停下來(lái)的,只有火車(chē)自己才能完成這一動(dòng)作,火車(chē)需要調(diào)用內(nèi)部的離合器和剎車(chē)片等多個(gè)器件協(xié)作才能完成剎車(chē)這個(gè)動(dòng)作,司機(jī)剎 車(chē)的過(guò)程只是給火車(chē)發(fā)了一個(gè)消息,通知火車(chē)要執(zhí)行剎車(chē)動(dòng)作而已。 抽象: 抽象就是找出一些事物的相似和共性之處,然后將這些事物歸為一個(gè)類(lèi),這個(gè)類(lèi)只考慮這些事物的相似和共性之處,并且會(huì)忽略與當(dāng)前主題和目標(biāo)無(wú)關(guān)的那些方面,將注意力集中在與當(dāng)前目標(biāo)有關(guān)的方面。例如,看到一只螞蟻和大象,你能夠想象出它們的相同之處,那就是抽象。抽象包括行為抽象和狀態(tài)抽象兩個(gè)方面。例如,定義一個(gè) Person 類(lèi),如下: class Person { String name。 int age。 } 人本來(lái)是很復(fù)雜的事物,有很 多方面,但因?yàn)楫?dāng)前系統(tǒng)只需要了解人的姓名和年齡,所以上面定義的類(lèi)中只包含姓名和年齡這兩個(gè)屬性,這就是一種抽像,使用抽象可以避免考慮一些與目標(biāo)無(wú)關(guān)的細(xì)節(jié)。我對(duì)抽象的理解就是不要用顯微鏡去看一個(gè)事物的所有方面,這樣涉及的內(nèi)容就太多了,而是要善于劃分問(wèn)題的邊界,當(dāng)前系統(tǒng)需要什么,就只考慮什么。 繼承: 在定義和實(shí)現(xiàn)一個(gè)類(lèi)的時(shí)候,可以在一個(gè)已經(jīng)存在的類(lèi)的基礎(chǔ)之上來(lái)進(jìn)行,把這個(gè)已經(jīng)存在的類(lèi)所定義的內(nèi)容作為自己的內(nèi)容,并可以加入若干新的內(nèi)容,或修改原來(lái)的方法使之更適合特殊的需要,這就是繼承。繼承是子類(lèi)自動(dòng)共享父類(lèi) 數(shù)據(jù)和方法的機(jī)制,這是類(lèi)之間的一種關(guān)系,提高了軟件的可重用性和可擴(kuò)展性。 多態(tài): 多態(tài)是指程序中定義的引用變量所指向的具體類(lèi)型和通過(guò)該引用變量發(fā)出的方法調(diào)用在編程時(shí)并不確定,而是在程序運(yùn)行期間才確定,即一個(gè)引用變量倒底會(huì)指向哪個(gè)類(lèi)的實(shí)例對(duì)象,該引用變量發(fā)出的方法調(diào)用到底是哪個(gè)類(lèi)中實(shí)現(xiàn)的方法,必須在由程序運(yùn)行期間才能決定。因?yàn)樵诔绦蜻\(yùn)行時(shí)才確定具體的類(lèi),這樣,不用修改源程序代碼,就可以讓引用變量綁定到各種不同的類(lèi)實(shí)現(xiàn)上,從而導(dǎo)致該引用調(diào)用的具體方法隨之改變,即不修改程序代碼就可以改變程序運(yùn)行時(shí)所綁定的具 體代碼,讓程序可以選擇多個(gè)運(yùn)行狀態(tài),這就是多態(tài)性。多態(tài)性增強(qiáng)了軟件的靈活性和擴(kuò)展性。例如,下面代碼中的 UserDao 是一個(gè)接口,它定義引用變量userDao 指向的實(shí)例對(duì)象由 ()在執(zhí)行的時(shí)候返回,有時(shí)候指向的是UserJdbcDao 這個(gè)實(shí)現(xiàn),有時(shí)候指向的是 UserHibernateDao 這個(gè)實(shí)現(xiàn),這樣,不用修改源代碼,就可以改變 userDao 指向的具體類(lèi)實(shí)現(xiàn),從而導(dǎo)致 ()方法調(diào)用的具體代碼也隨之改變,即有時(shí)候調(diào)用的是 UserJdbcDao 的 insertUser 方法,有時(shí)候調(diào)用的是UserHibernateDao 的 insertUser 方法: UserDao userDao = ()。 (user)。 比喻:人吃飯,你看到的是左手,還是右手? java 中實(shí)現(xiàn)多態(tài)的機(jī)制是什么? 靠的是父類(lèi)或接口定義的引用變量可以指向子類(lèi)或具體實(shí)現(xiàn)類(lèi)的實(shí)例對(duì)象,而程序調(diào)用的方法在運(yùn)行期才動(dòng)態(tài)綁定,就是引用變量所指向的具體實(shí)例對(duì)象的方法,也就是內(nèi)存里正在運(yùn)行的那個(gè)對(duì)象的方法,而不是 引用變量的類(lèi)型中定義的方法。 abstract class 和 interface 有什么區(qū)別 ? 含有 abstract修飾符的 class即為抽象類(lèi), abstract 類(lèi)不能創(chuàng)建的實(shí)例對(duì)象。含有 abstract方法的類(lèi)必須定義為 abstract class, abstract class 類(lèi)中的方法不必是抽象的。 abstract class 類(lèi)中定義抽象方法必須在具體 (Concrete)子類(lèi)中實(shí)現(xiàn),所以,不能有抽象構(gòu)造方法或抽象靜態(tài)方法。如果的子類(lèi)沒(méi)有實(shí)現(xiàn)抽象父類(lèi)中的所有抽象方法,那么子類(lèi)也必須定義為abstract 類(lèi)型。 接口( interface)可以說(shuō)成是抽象類(lèi)的一種特例,接口中的所有方法都必須是抽象的。接口中的方法定義默認(rèn)為 public abstract 類(lèi)型,接口中的成員變量類(lèi)型默認(rèn)為 public static final。 下面比較一下兩者的語(yǔ)法區(qū)別: ,接口中不能有構(gòu)造方法。 ,接口中沒(méi)有普通成員變量 ,接口中的所有方法必須都是抽象的,不能有非抽象的普通方法。 4. 抽象類(lèi)中的抽象方法的訪問(wèn)類(lèi)型可以是 public, protected 和(默認(rèn)類(lèi)型 ,雖然 eclipse 下不報(bào)錯(cuò),但應(yīng)該也不行),但接口中的抽象方法只能是 public 類(lèi)型的,并且默認(rèn)即為 public abstract 類(lèi)型。 5. 抽象類(lèi)中可以包含靜態(tài)方法,接口中不能包含靜態(tài)方法 6. 抽象類(lèi)和接口中都可以包含靜態(tài)成員變量,抽象類(lèi)中的靜態(tài)成員變量的訪問(wèn)類(lèi)型可以任意,但接口中定義的變量只能是 public static final 類(lèi)型,并且默認(rèn)即為 public static final 類(lèi)型。 7. 一個(gè)類(lèi)可以實(shí)現(xiàn)多個(gè)接口,但只能繼承一個(gè)抽象類(lèi)。 下面接著再說(shuō)說(shuō)兩者在應(yīng)用上的區(qū)別: 接口更多的是在系統(tǒng)架構(gòu)設(shè)計(jì)方法發(fā)揮作用,主要用于定義模塊之間的通信契約。而抽象類(lèi)在代碼實(shí)現(xiàn)方面發(fā)揮作用,可以實(shí)現(xiàn)代碼的重用,例如,模板方法設(shè)計(jì)模式是抽象類(lèi)的一個(gè)典型應(yīng)用,假設(shè)某個(gè)項(xiàng)目的所有 Servlet 類(lèi)都要用相同的方式進(jìn)行權(quán)限判斷、記錄訪問(wèn)日志和處理異常,那么就可以定義一個(gè)抽象的基類(lèi),讓所有的 Servlet 都繼承這個(gè)抽象基類(lèi),在抽象基類(lèi)的 service 方法中完成權(quán)限判斷、記錄訪問(wèn)日志和處理異常的代碼,在各個(gè)子類(lèi)中只是完成各自的業(yè)務(wù)邏輯代碼,偽代碼如下: public abstract class BaseServlet extends HttpServlet { public final void service(HttpServletRequest request, HttpServletResponse response) throws IOExcetion,ServletException { 記錄訪問(wèn)日志 進(jìn)行權(quán)限判斷 if(具有權(quán)限 ) { try { doService(request,response)。 } catch(Excetpion e) { 記錄異常信息 } } } protected abstract void doService(HttpServletRequest request, HttpServletResponse response) throws IOExcetion,ServletException。 //注意訪問(wèn)權(quán)限定義成 protected,顯得既專業(yè),又嚴(yán)謹(jǐn),因?yàn)樗菍iT(mén)給子類(lèi)用的 } public class MyServlet1 extends BaseServlet { protected void doService(HttpServletRequest request, HttpServletResponse response) throws IOExcetion,ServletException { 本 Servlet 只處理的具體業(yè)務(wù)邏輯代碼 } } 父類(lèi)方法中間的某段代碼不確定,留給子類(lèi)干,就用模板方法設(shè)計(jì)模式。 備注:這道題的思路是先從總體解釋抽象類(lèi)和接口的基本概念,然后再比較兩者的語(yǔ)法細(xì)節(jié),最后再說(shuō)兩者的應(yīng)用區(qū)別。比較兩者語(yǔ)法細(xì)節(jié)區(qū)別的條理是:先從一 個(gè)類(lèi)中的構(gòu)造方法、普通成員變量和方法(包括抽象方法),靜態(tài)變量和方法,繼承性等 6 個(gè)方面逐一去比較回答,接著從第三者繼承的角度的回答,特別是最后用了一個(gè)典型的例子來(lái)展現(xiàn)自己深厚的技術(shù)功底。 abstract 的 method 是否可同時(shí)是 static,是否可同時(shí)是 native,是否可同時(shí)是synchronized? abstract 的 method 不可以是 static 的,因?yàn)槌橄蟮姆椒ㄊ且蛔宇?lèi)實(shí)現(xiàn)的,而 static 與子類(lèi)扯不上關(guān)系! native 方法表示該方法要用另外一種依賴平臺(tái)的編程語(yǔ)言實(shí)現(xiàn)的,不存在 著被子類(lèi)實(shí)現(xiàn)的問(wèn)題,所以,它也不能是抽象的,不能與 abstract 混用。例如, FileOutputSteam 類(lèi)要硬件打交道,底層的實(shí)現(xiàn)用的是操作系統(tǒng)相關(guān)的 api 實(shí)現(xiàn),例如,在 windows 用 c 語(yǔ)言實(shí)現(xiàn)的,所以,查看 jdk 的源代碼,可以發(fā)現(xiàn) FileOutputStream 的 open 方法的定義如下: private native void open(String name) throws FileNotFoundException。 如果我們要用 java 調(diào)用別人寫(xiě)的 c 語(yǔ)言函數(shù),我們是無(wú)法直接調(diào)用的,我們需 要按照 java的要求寫(xiě)一個(gè) c 語(yǔ)言的函數(shù),又我們的這個(gè) c 語(yǔ)言函數(shù)去調(diào)用別人的 c 語(yǔ)言函數(shù)。由于我們的 c 語(yǔ)言函數(shù)是按 java 的要求來(lái)寫(xiě)的,我們這個(gè) c 語(yǔ)言函數(shù)就可以與 java 對(duì)接上, java 那邊的對(duì)接方式就是定義出與我們這個(gè) c 函數(shù)相對(duì)應(yīng)的方法, java 中對(duì)應(yīng)的方法不需要寫(xiě)具體的代碼,但需要在前面聲明 native。 關(guān)于 synchronized 與 abstract 合用的問(wèn)題,我覺(jué)得也不行,因?yàn)樵谖規(guī)啄甑膶W(xué)習(xí)和開(kāi)發(fā)中,從來(lái)沒(méi)見(jiàn)到過(guò)這種情況,并且我覺(jué)得 synchronized 應(yīng)該是作用在一個(gè)具體的方法上才有意義。而且,方 法上的 synchronized 同步所使用的同步鎖對(duì)象是 this,而抽象方法上無(wú)法確定 this 是什么。 什么是內(nèi)部類(lèi)? Static Nested Class 和 Inner Class 的不同。 內(nèi)部類(lèi)就是在一個(gè)類(lèi)的內(nèi)部定義的類(lèi),內(nèi)部類(lèi)中不能定義靜態(tài)成員(靜態(tài)成員不是對(duì)象的特性,只是為了找一個(gè)容身之處,所以需要放到一個(gè)類(lèi)中而已,這么一點(diǎn)小事,你還要把它放到類(lèi)內(nèi)部的一個(gè)類(lèi)中,過(guò)分了??!提供內(nèi)部類(lèi),不是為讓你干這種事情,無(wú)聊,不讓你干。我想可能是既然靜態(tài)成員類(lèi)似 c 語(yǔ)言的全局變量,而內(nèi)部類(lèi)通常是用于創(chuàng)建內(nèi)部 對(duì)象用的,所以,把“全局變量”放在內(nèi)部類(lèi)中就是毫無(wú)意義的事情,既然是毫無(wú)意義的事情,就應(yīng)該被禁止),內(nèi)部類(lèi)可以直接訪問(wèn)外部類(lèi)中的成員變量,內(nèi)部類(lèi)可以定義在外部類(lèi)的方法外面,也可以定義在外部類(lèi)的方法體中,如下所示: public class Outer { int out_x = 0。 public void method() { Inner1 inner1 = new Inner1()。 public class Inner2 //在方法體內(nèi)部定義的內(nèi)部類(lèi) { public method() { out_x = 3。 } } Inner2 inner2 = new Inner2()。 } public class Inner1 //在方法體外面定義的內(nèi)部類(lèi) { } } 在方法體外面定義的內(nèi)部類(lèi)的訪問(wèn)類(lèi)型可以是 public,protecte,默認(rèn)的, private 等 4 種類(lèi)型,這就好像類(lèi)中定義的成員變量有 4 種訪問(wèn)類(lèi)型一樣,它們決定這個(gè)內(nèi)部類(lèi)的定義對(duì)其他類(lèi)是否可見(jiàn);對(duì)于這種情況,我們也可以在外面創(chuàng)建內(nèi)部類(lèi)的實(shí)例對(duì)象,創(chuàng)建內(nèi)部類(lèi)的實(shí)例對(duì)象時(shí),一定要先創(chuàng)建外部類(lèi)的實(shí) 例對(duì)象,然后用這個(gè)外部類(lèi)的實(shí)例對(duì)象去創(chuàng)建內(nèi)部類(lèi)的實(shí)例對(duì)象,代碼如下: Outer outer = new Outer()。 inner1 = Innner1()。 在方法內(nèi)部定義的內(nèi)部類(lèi)前面不能有訪問(wèn)類(lèi)型修飾符,就好像方法中定義的局部變量一樣,但這種內(nèi)部類(lèi)的前面可以使用 final 或 abstract 修飾符。這種內(nèi)部類(lèi)對(duì)其他類(lèi)是不可見(jiàn)的其他類(lèi)無(wú)法引用這種內(nèi)部類(lèi),但是這種內(nèi)部類(lèi)創(chuàng)建的實(shí)例對(duì)象可以傳遞給其他類(lèi)訪問(wèn)。這種內(nèi)部類(lèi)必須是先定義,后使用,即內(nèi)部類(lèi)的定義代 碼必須出現(xiàn)在使用該類(lèi)之前,這與方法中的局部變量必須先定義后使用的道理也是一樣的。這種內(nèi)部類(lèi)可以訪問(wèn)方法體中的局部變量,但是,該局部變量前必須加 final 修飾符。 對(duì)于這些細(xì)節(jié),只要在 eclipse 寫(xiě)代碼試試,根據(jù)開(kāi)發(fā)工具提示的各類(lèi)錯(cuò)誤信息就可以馬上了解到。 在方法體內(nèi)部還可以采用如下語(yǔ)法來(lái)創(chuàng)建一種匿名內(nèi)部類(lèi),即定義某一接口或類(lèi)的子類(lèi)的同時(shí),還創(chuàng)建了該子類(lèi)的實(shí)例對(duì)象,無(wú)需為該子類(lèi)定義名稱: public class Outer { public void start() { new Thread( new Runable(
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1