日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java面试参考指南–第1部分

發布時間:2023/12/3 java 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java面试参考指南–第1部分 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

JAVA面向對象的概念

Java基于面向對象的概念,它允許更高級別的抽象以實際方式解決任何問題。

面向對象的方法將實際對象中的問題解決方案概念化,從而更易于在整個應用程序中重用。 例如椅子,風扇,狗,電腦等。

在Java中,類是定義同類對象的常見行為的藍圖,模板或原型。 實例是特定類的實現,并且類的所有實例都具有類似的屬性,如類定義中所述。 例如,您可以定義一個名為House with room number的類作為屬性,并創建實例,例如2個房間的房子,3個房間的房子等。

優點:

以下是面向對象軟件開發的一些優點:

  • 維護成本較低,主要是因為它是模塊化的。
  • 由于具有繼承性等功能,因此可以更快地進行開發,從而提高了代碼可重用性。
  • 改進的代碼可靠性和靈活性
  • 由于真實世界的建模而易于理解。
  • 在對象級別更好的抽象。
  • 從一個開發階段過渡到另一階段的過程中降低了復雜性。

OOPS有四個主要功能:

  • 封裝形式
  • 遺產
  • 多態性
  • 抽象化

封裝形式:

封裝為其他對象提供了契約,以隱藏和公開可以訪問其他對象的對象。 在Java中,我們使用私有訪問修飾符來隱藏方法和變量以限制外部世界。 Java還提供了不同的訪問修飾符,例如public,default,protected和private,它們用于隱藏不同級別的可見性,但最終目標是封裝不需要更改的事物。 按照最佳實踐,一個班級應該只有一個理由進行更改,而封裝將現實帶入實現“ 一個原因 ”的設計原則。

按照最佳實踐,封裝意味著隱藏那些經常更改的內容,以避免破壞其他類。

好處:以下是封裝的一些優點: ?

  • 我們可以通過隱藏對象的屬性來保護對象的內部狀態。
  • 它通過防止對象以意外方式彼此交互來提高代碼模塊化。
  • 增加可用性
  • 維護特定對象的合同
  • 封裝促進維護
  • 可以獨立進行代碼更改

多態性:

多態性是(在編程中)針對不同底層形式(數據類型)呈現相同接口的能力。 這意味著類在共享公共接口時具有不同的功能,并且可以通過傳遞特定的類引用來動態調用。

經典示例是Shape類以及可以從中繼承的所有類(正方形,圓形,十二面體,不規則多邊形,splat等)。

在此示例中,每個類都有其自己的Draw()函數,并且客戶端代碼可以簡單地執行以下操作:

Shape shape=new Square ();Shape.area() to get the correct behavior for any shape.

多態的好處在于,使用不同類的代碼不需要知道正在使用哪個類,因為它們都以相同的方式使用。

面向對象的編程語言用來實現運行時多態的過程稱為動態綁定。

注意 :多態性是在運行時根據用于調用它的對象選擇更多專門方法的能力。 不涉及抽象類的情況下可能會發生多態。

優點:

  • 創建可重用的代碼:這意味著一旦創建,實現和測試了類,就可以輕松使用它,而無需關心類中編寫的內容。
  • 它提供了更通用且松散耦合的代碼。
  • 編譯時間要短得多,并且可以加快開發速度。
  • 動態綁定:
  • 相同的接口可用于創建具有不同實現的方法
  • 可以通過使用相同的方法簽名替換完整的實現

實現多態的方法重載:重載處理兩種方法: 一個在父類中,另一個在子類中,并且具有相同的名稱和簽名。

通過覆蓋,您可以針對不同的對象類型以不同的方式定義相同的操作

例如

while(it.hasNext()) {Shape s = (Shape) it.next();totalArea += s.area(dim); //polymorphic method call. Will call right object method}

方法重載或臨時多態性或靜態多態性:

重載處理同一個類中具有相同名稱但具有不同方法簽名的多個方法。 通過重載,您可以以不同的方式為不同的數據定義相同的操作。 有時它說是靜態多態性,但實際上不是多態性。

方法重載無非就是擁有兩個名稱相同但參數列表不同的方法。 它與繼承和多態性無關。 重載方法與覆蓋方法不同。 [ Head First Java ]

Java中通過泛型進行的參數多態性:

在類聲明中,字段名稱可以與不同類型關聯,而方法名稱可以與不同參數和返回類型關聯。 Java通過泛型支持參數多態性。

列表就是一個例子,它可以接受泛型所包含的數據類型。

List<String> list = new ArrayList<String>();

為什么我們不能在Java中覆蓋靜態方法?

覆蓋取決于擁有類的實例。 多態性的關鍵是可以對一個類進行子類化,并且實現那些子類的對象對于在超類中定義的相同方法(在子類中被重寫)將具有不同的行為。 靜態方法未與類的任何實例相關聯,因此該概念不適用。

影響Java設計的因素有兩個。 一個是對性能的關注:Smalltalk對其速度太慢提出了很多批評(垃圾回收和多態調用是其中的一部分),Java的創建者決心避免這種情況。 另一個決定是Java的目標受眾是C ++開發人員。 使靜態方法按其實際方式工作對C ++程序員來說是很有益的,并且非常快,因為無需上層類來確定要調用的方法,您可以直接轉到類并調用指定的方法。 [堆棧溢出]

遺產:

它是在派生類中包含基類的行為(即方法)和狀態(即變量),以便它們可以在該派生類中訪問。 繼承的主要優點是它提供了代碼重用的正式機制,并且避免了重復

繼承的類通過重用父行為并添加新功能來擴展應用程序的功能。 這將使設計緊密耦合,因為如果要更改超類,則必須知道子類的所有詳細信息,以避免破壞

它是軟件可重用性的一種形式,其中從現有類(超類)創建新的類(子類),從而增強功能,同時使用超類的某些屬性。

因此,如果您有一個Parents類,那么您就有一個擴展Parent的Child類,Child繼承了Person擁有的所有東西。

優點:

  • 提高可重用性
  • 在邏輯上建立“是”關系:例如,狗是動物
  • 模塊化代碼
  • 避免重復

退稅:

  • 緊密耦合 :子類取決于父類的實現,這就是緊密耦合的原因。

抽象:

抽象是指根據其接口和功能而不是其實現細節來開發類。 抽象類公開接口,不包括實際實現。 它將對象實現與其行為或實現分開。 通過隱藏無關的細節,抽象降低了復雜性。

優點:

  • 通過使用抽象,我們可以將可以分組的事物分離為另一種類型。
  • 可以將經常更改的屬性和方法分組為一個單獨的類型,以便不必對主要類型進行更改。 這為OOAD原則增加了力量-“代碼應為擴展而開放,而為修改而封閉”。
  • 簡化域模型的表示。

抽象與封裝之間的區別

封裝是用作抽象的一部分的策略。 封裝是指對象的狀態,即對象封裝其狀態并將其從外部隱藏起來。 類的外部用戶通過其方法與之交互,但無法直接訪問類的狀態。 因此,該類抽象出了與狀態相關的實現細節。

抽象是一個更通用的術語。 也可以通過(以及其他)子分類來實現。 例如,標準庫中的List類是對一系列項目的抽象,這些項目按其位置索引。List的具體示例是ArrayList或LinkedList。 與列表進行交互的代碼抽象出它正在使用哪種列表的詳細信息[堆棧溢出]

如果不通過封裝隱藏基礎狀態,則通常不可能進行抽象化–如果一個類公開其內部狀態,則它無法更改其內部工作方式,因此無法抽象化

什么是抽象類和抽象方法?

在設計中,您希望基類僅為其派生類提供一個接口。 這意味著,您不希望任何人實際實例化基類的對象。 您只需要對其進行上載(隱式上載,這將為您提供多態行為),以便可以使用其接口。 這可以通過使用abstract關鍵字使該類抽象化來實現。

對不實例化抽象類提供了一些限制,無論誰使用,都應實現抽象方法。 并提供多態性

抽象類可以包含抽象方法和具體方法。 在類中,如果一個方法被聲明為抽象,則該類必須被聲明為抽象。 但是,與此相反不一定是正確的。 如果class被聲明為抽象類,則它可能沒有抽象方法。

如果某個方法不提供實際的實現,而僅提供方法簽名,則稱為抽象方法。 擴展抽象類的子類留有實際的實現。

抽象方法無法實例化; 另一個類只能擴展它。

什么時候使用抽象類?

抽象類使您可以定義一些默認行為,并強制子類提供任何特定行為。

例如:List是接口,而AbstractList提供List的默認行為,可以按原樣使用或在子類(例如ArrayList)中完善它。

什么是接口?

interface關鍵字通過完全避免任何方法或函數的實現,使抽象類的這一概念更進一步。 您只能聲明方法或函數,而不能提供實現。 實現接口的類應提供實際的實現。 接口是OO設計中非常有用且常用的方面,因為它提供了接口和實現的分離,并使您能夠 :

界面優勢:

  • 多重繼承
  • 松散耦合定義的抽象操作作為單獨的下劃線實現可以是JDBC,JPA,JTA等。
  • 接口程序未實現
  • 具有動態綁定的多態性 –在不透露對象實際實現的情況下顯示對象的編程接口。
  • 抽象層:分離問題
  • 接口和抽象類之間的區別:

    • 接口是一種合同,要求類(無論要實現接口的人)以其在接口中定義的方式實現接口。 它是帶有方法聲明的空外殼。
    • 抽象類定義一些常見的行為,并要求子類為該類定義不常見或特定的行為
    • 可以以任何可見性定義抽象類的方法和成員,而接口的所有方法都必須定義為public
    • 繼承抽象類時,子類必須定義抽象方法,而一個接口可以擴展另一個接口,而不必定義方法
    • 子類只能擴展一個抽象(或任何其他)類,而一個接口可以擴展或一個類可以實現多個其他接口。
    • 子類可以定義具有相同或更少限制性可見性的抽象方法,而實現接口的類必須定義具有完全相同的可見性的方法
    • 接口不包含構造函數,而抽象類包含。
    • 在Java接口中聲明的變量默認為final。 抽象類可能包含非最終變量
    • 默認情況下,Java接口的成員是公共的。 Java抽象類可以具有類成員的常用風格,例如private,protected等。

    組成:

    通過實現繼承或組合可以實現代碼的可重用性,但是用于代碼重用的組合方法比繼承提供了更強的封裝性,因為對后端類的更改不必破壞僅依賴于前端類的任何代碼。

    組合是在類中實現具有關系的設計技術。 我們可以使用Java繼承或對象組合進行代碼重用

    合成是關于表達對象之間的關系。 想想椅子的例子。 椅子有座位。 椅子有靠背。 椅子有一組腿。 短語“具有”表示椅子擁有或至少使用另一個對象的關系。 正是這種“有”的關系才是構成的基礎

    優點:

    • 控制可見度
    • 實現可以代替運行時間
    • 松耦合作為接口類不依賴于實現。

    組成與繼承之間的區別?

    沒有。 組成(有) 繼承(是)
    1個 提倡多態和代碼重用 提倡多態和代碼重用
    2 在運行時完成時獲取對象 在編譯時動態獲取對象
    3 可以在運行時替換實現 可以在編譯時替換實現
    4 子類不依賴于父類,而是支持松散耦合(特別是在接口驅動下) 子類取決于父類的實現,這就是為什么緊密耦合的原因
    5 在房屋設有浴室時使用。 說房子是浴室是不正確的 繼承是單向的。 例如,房屋是建筑物。 但是建筑物不是房子

    注意:不要僅使用繼承來獲得代碼重用。 如果沒有“存在”關系,則使用組合進行代碼重用。

    對象關系中組合和聚合之間的差異

    聚合:聚合是一個類別屬于一個集合的關聯。 這是整體關系的一部分,其中一部分可以沒有整體而存在。 這是較弱的關系。 無循環依賴性。 示例:訂單和產品

    組合:組合是一個類別屬于一個集合的關聯。 這是整體關系的一部分,其中沒有整體就不可能存在一部分。 如果整體被刪除,則所有部分都被刪除。 這是更牢固的關系。 例如多邊形和點,訂單和訂單詳細信息 ?

    參考文獻:

    • http://stackoverflow.com/
    • http://en.wikipedia.org/
    • 有效的Java?

    參考: Java面試參考指南–第1部分,來自我們的JCG合作伙伴 Nitin Kumar,位于Tech My Talk博客上。

    翻譯自: https://www.javacodegeeks.com/2014/02/java-interview-reference-guide-part-1.html

    總結

    以上是生活随笔為你收集整理的Java面试参考指南–第1部分的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 欧美爱爱网 | 国产精品电影一区二区三区 | 乱人伦av | sesese99| 毛片库| 天堂久久一区 | 高潮毛片又色又爽免费 | 日韩一区av在线 | 日韩精品毛片 | 不卡的av电影| 色婷婷亚洲一区二区三区 | 精品无码人妻少妇久久久久久 | 欧美激情91 | 一区二区三区四区国产精品 | 天天在线观看 | 无码人妻久久一区二区三区不卡 | 夜晚福利视频 | 自由 日本语 热 亚洲人 | 91jk制服白丝超短裙大长腿 | 亚洲精品一区二区三区婷婷月 | 国产青青青| 涩涩国产 | 亚洲成人黄色在线 | 性v天堂 | 超碰免费在线97 | yy4138理论片动漫理论片 | 黑人玩弄人妻一区二区三区影院 | 美女黄污网站 | 中文字字幕在线观看 | 国产 第1190页 | 91久久久国产精品 | 亚洲二区视频 | 亚洲经典一区二区三区 | 日韩一二三区视频 | 色综合狠狠操 | 中国一级片黄色一级片黄 | 天天色图片 | 香蕉污视频 | 制服中文字幕 | 亚洲综合第一区 | 国产午夜一区二区三区 | 日本亲与子乱ay中文 | 精品美女久久久久 | 色99在线 | 欧美特级黄色 | 亚洲国产剧情在线观看 | 图片区亚洲色图 | 男人的天堂97 | aa丁香综合激情 | 欧美精品aa| 啪啪影音 | 久草免费在线视频 | 国产日韩精品一区二区三区 | 一区二区三区久久久久 | 国产精品影片 | 美女av片 | www.爱色av.com | 成年网站在线播放 | 欧美第二区| 九色porny原创自拍 | 四虎一区二区 | 香蕉av一区二区三区 | 国产大片b站| 老司机午夜性大片 | 老司机午夜精品 | 女生脱裤子让男生捅 | 91漂亮少妇露脸在线播放 | 粉嫩欧美一区二区三区 | 超碰男人天堂 | 极品另类 | 亚洲性猛交富婆 | 韩国伦理av | 成人福利视频 | 亚洲欧洲日韩综合 | 第一毛片| 国产吞精囗交免费视频 | 秋霞免费av| 黄色高清在线观看 | 国产精品入口66mio | 欧美精品一区二区三区在线 | 综合视频一区二区 | 2018天天干天天操 | 欧美午夜性生活 | 国产第20页| 中文字幕1页 | 日本精品视频在线观看 | 久色伊人| 日韩成人av免费在线观看 | www.日本精品 | 亚洲在线精品视频 | 欧美日韩观看 | 丝袜美女av | 丁香av| 天天综合天天做天天综合 | 成人av动漫在线观看 | 日韩av资源站 | 成年人在线播放 | 精品一二三四 | 日日免费视频 |