JVM的跨平臺特性

首先java的跨平臺不是指java語言自己具備跨平臺特性,而是不一樣平臺上都有可讓java運行環境,這個運行環境就是jre。JRE由JVM和其目錄下類庫組成,JVM 是 Java 平臺的基礎,是整個java實現跨平臺的最核心的部分,全部的Java程序首先會編譯成.class類文件字節碼,字節碼不能直接與操做系統交互,在運行時JVM經過類加載器加載字節碼,以解釋或者編譯的方式將字節碼轉換成目標機器碼交給本地系統去執行,從而屏蔽了操做系統和硬件的細節,也就實現了「一次編譯處處運行「的效果。java

final、finally、finalize有什麼不一樣

  • final能夠用來修飾類、方法、變量,final修飾類時表示該類不能夠被繼承,修飾方法是表示該方法不可被重寫,修飾變量時表示該變量不可修改,另外,在併發編程中對final變量的訪問是安全的,不須要額外的同步開銷。
  • finally是java保證重點代碼必定被執行的一種機制,一般用在try-finally、try-catch-finall中來作一些相似JDBC的關閉、io流的關閉以及解鎖等操做。
  • finalize是Object類的一個方法,做用是保證對象在被GC垃圾收集前完成特定資源的回收,這個方法已經不推薦使用,由於finalize方法的執行時機沒法保證、會阻礙垃圾的快速回收,使用不當會影響性能,容易致使程序死鎖、掛起等。

封裝、繼承、多態

封裝編程

  • 封裝是指利用抽象數據類型將數據和基於數據的操做封裝在一塊兒,隱藏內部實現細節,只保留一些對外接口使之與外部發生聯繫。良好的封裝可以減小耦合。
    繼承
  • 繼承是使用已存在的類做爲基礎創建新類,新類能夠擴展父類,經過繼承,能夠方便的複用之前的代碼,提升開發效率。
  • 繼承破壞了封裝,對父類而已,其實現細節對子類來講是透明的,繼承是一種強耦合關係,父類變,子類也跟着變。
    多態
  • 多態是指一個變量, 一個方法或者一個對象能夠有不一樣的形式;也能夠理解爲在運行期間才決定一個引用變量指向的真實對象,以及該引用變量發出的方法調用是由哪一個類所實現。
  • 方法重載
    • 指一個類裏有兩個或者多個名字相同參數類型列表不一樣的函數
    • 編譯時多態,編譯時根據參數變量的類型判斷應該調用哪一個方法,嚴格來說,重載是一種語言特性,與多態無關。
  • 重寫
    • 子類重寫父類方法,重寫發送在子類中(重寫方法與被重寫方法只有函數體不一樣,另外,聲明爲final或static的方法已經父類的構造方法不能被重寫)
    • 運行時多態,在運行的時候,根據引用變量所指向的實際對象的類型來調用方法

Java實現多態有三個必要條件:繼承、重寫、向上轉型(父類引用指向子類對象)安全

繼承鏈調用優先級併發

在繼承鏈中對象方法的調用存在一個優先級:this.show(O)、super.show(O)、this.show((super)O)、super.show((super)O)。函數

抽象類性能

  • 抽象類是對類的抽象,體現了數據抽象的思想,是實現多態的一種機制。
  • 爲其子類提供一個公共的類型,封裝子類中重複的內容(成員變量和方法),子類雖然有不一樣的實現,可是定義是一致的。
    接口
  • 接口是對行爲的抽象,是一些方法特徵的集合

抽象類與接口的區別this

  • 抽象類能夠有構造方法 接口不行
  • 抽象類能夠有普通成員變量 接口只能聲明爲 final static
  • 抽象類能夠有非抽象的方法 接口必須所有抽象
  • 抽象類可有有多種訪問類型 接口只能是 public abstract
  • 一個類能夠實現多個接口 但只能繼承一個抽象類
相關文章
相關標籤/搜索