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

正文內(nèi)容

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

2025-08-14 21:35本頁面

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

  

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