Java中靜態變量和實例變量的區別?&和&&

靜態變量和實例變量的區別?

在語法定義上的區別:靜態變量前要加static關鍵字,而實例變量前不加。

在程序運行時的區別:實例變量屬於某個對象的屬性,必須創建了實例對象,其中的實例變量纔會被分配空間,才能使用這個實例變量。靜態變量不屬於某個實例對象,而是屬於類,所以也稱爲類變量,只要程序加載了類的字節碼文件,不用創建任何實例象,靜態變量就會被分配空間,靜態變量就可以被使用了。

總之,實例變量必須創建對象後纔可以通過這個對象來使用,靜態變量則可以直接使用類名來引用。

是否可以從一個static方法內部發出對非static方法的調用?

不可以。因爲非static方法要與對象關聯在一起,必須創建一個對象後,纔可以在該對象上進行方法的調用,而static方法調用時不需要創建對象,可以直接調用。也就是說,一個static方法被調用時,可能還沒有創建任何實例對象,所以,一個static方法內部不可以發出對非static方法的調用。

&和&&的區別

&與&&都可以用作邏輯與的運算符,當兩邊的結果都爲true時,運算結果才爲true,否則只要有一方運算結果是false,運算結果就爲false。

而&不管前一個表達式得到的值是true還是false,都會執行後一個表達式。
而使用&&的時候,當前一個表達式得值爲false時,就不會繼續執行括號裏面的表達式。

重寫(Override) 和重載 (Overload)

方法的重寫Override和重載Overload是Java多態性的不同表現。重寫Override是父類與子類之間多態性的一種表現,重載Overload是一個類中多態性的一種表現。如果在子類中定義某方法與其父類有相同的名稱和參數,我們說該方法被重寫 (Override)。

Java 中的方法重載發生在同一個類裏面兩個或者是多個方法的方法名相同但是參數不同的情況(同一個類中,同名不同參數);
方法重寫是說子類重新定義了父類的方法,方法覆蓋必須有相同的方法名,參數列表和返回類型(同名同參)。

(1)重寫(Overriding)

重寫規則

  1. 參數列表:必須與被重寫方法的參數列表完全匹配。
  2. 返回類型:必須與超類中被重寫的方法中聲明的返回類型或子類型完全相同
  3. 訪問級別:一定不能比被重寫方法強,可以比被重寫方法的弱。
  4. 非檢查異常:重寫方法可以拋出任何非檢查的異常,無論被重寫方法是否聲明瞭該異常。
  5. 檢查異常:重寫方法一定不能拋出新的檢查異常,或比被重寫方法聲明的檢查異常更廣的檢查異常
  6. 不能重寫標誌爲final,static的方法

其中:

  1. 父類與子類之間的多態性,對父類的函數進行重新定義。如果在子類中定義某方法與其父類有相同的名稱和參數,我們說該方法被重寫 (Overriding)。在Java中,子類可繼承父類中的方法,而不需要重新編寫相同的方法。但有時子類並不想原封不動地繼承父類的方法,而是想作一定的修改,這就需要採用方法的重寫。方法重寫又稱方法覆蓋。

  2. 若子類中的方法與父類中的某一方法具有相同的方法名、返回類型和參數表,則新方法將覆蓋原有的方法。如需父類中原有的方法,可使用super關鍵字,該關鍵字引用了當前類的父類。

  3. 子類函數的訪問修飾權限不能少於父類的; 

(2)重載(Overloading)

重載方法的規則:
  1. 參數列表:被重載的方法必須改變參數列表。
  2. 返回類型:可以改變返回類型。
  3. 修飾符:可以改變修飾符
  4. 異常:可以聲明新的或者更廣泛的異常。

其中:

  1. 方法重載是讓類以統一的方式處理不同類型數據的一種手段。多個同名函數同時存在,具有不同的參數個數/類型。重載Overloading是一個類中多態性的一種表現。

  2. Java的方法重載,就是在類中可以創建多個方法,它們具有相同的名字,但具有不同的參數和不同的定義。調用方法時通過傳遞給它們的不同參數個數和參數類型來決定具體使用哪個方法, 這就是多態性。

  3. 重載的時候,方法名要一樣,但是參數類型和個數不一樣,返回值類型可以相同也可以不相同。無法以返回型別作爲重載函數的區分標準。

發佈了63 篇原創文章 · 獲贊 6 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章