java--物件導向

來源:互聯網
上載者:User

標籤:tran   .com   添加   執行個體變數   外部   靜態內部類   java   final   非靜態內部類   

 

1. 定義類

[修飾符] class 類名{    零到多個構造器定義...    零到多個成員變數...    零到多個方法...}

1.1 定義構造器

[修飾符] 構造器名(形參列表){    // 構造器名必須與類名相同    // 由零到多條可執行語句組成}

2. 修飾符

2.1 修飾符適用範圍

  外部類/介面 成員屬性 方法 構造器 初始化塊 成員內部類 局部成員
public √ √ √ √   √  
protected   √ √ √   √  
包訪問 √ √ √ √ O √ O
private   √ √   √   √  
abstract √   √       √  
final √ √ √     √ √
static   √ √   √ √  
strictfp √   √     √  
synchronized     √        
native     √        
transient   √          
volatile   √          
default     √        
相同顏色不能同時出現(或同時出現無意義(灰色))

2.2 修飾符使用詳情

類(class)([12] [~34]) 方法([1234] [~5] [~67])
public 可被所有類使用(需類名與檔案名稱相同) public 4.全域範圍內可被訪問
default(空) 只能被相同包的其它類訪問 protected 3.可以被不同包的子類訪問
abstract 抽象類別, 不能建立執行個體, 只能作為父類 default(空) 2.可被相同包的其它類訪問
final 將無法被作為父類 private 1.只能在當前類內部被訪問
成員變數([1234] [~5] [~6]) [1] static 無此修飾, 則只能通過執行個體來調用
public 4.全域範圍內可被訪問 abstract 含抽象方法的類只能被定義成抽象類別
protected 3.可以被不同包的子類訪問 final 子類不允許覆蓋父類的final方法
default(空) 2.可被相同包的其它類訪問 構造器(沒有傳回值聲明)
private 1.只能在當前類內部被訪問(常) public 4.全域範圍內可被訪問(常)
[1] static 通過其修飾, 可通過類或執行個體調用 protected 3.可以被不同包的子類訪問
final 不允許為final變數重新賦值 default(空) 2.可被相同包的其它類訪問
初始化塊{} (在執行構造器之前執行) private 1.只能在當前類內部被訪問
static (不能對執行個體變數初始化)在類初始化階段執行, 而不是建立對象時執行. private修飾此類所有構造器, 子類將無法調用該類構造器, 從而無法繼承. 此類將不能直接建立執行個體, 但可通過建立一個(public static 類 方法)來返回執行個體並加以控制(P174)
default(空)
static修飾的方法中不能使用this引用, 所以static修飾的方法不能訪問不使用static修飾的普通成員
內部類([1234] [~5] [~67])

final修飾的成員變數必須顯式地指定初始值.

(1.類變數: 必須在靜態初始化模組中或聲明該類變數時指定初始值;

2.執行個體變數: 必須在非靜態初始化模組、聲明該執行個體變數或構造器中指定初始值)

public 4.全域範圍內可被訪問
protected 3.可以被外部類不同包的子類訪問
default(空) 2.可被外部類相同包的其它類訪問
private 1.只能在當前外部類內部被訪問
static 非靜態內部類不能擁有靜態成員 final修飾局部變數可以在聲明時指定, 也可以在後面的代碼中賦初始值, 但只能一次.
abstract 抽象類別, 不能建立執行個體, 只能作為父類
final 將無法被作為父類 final修飾形參, 形參會在調用該方法時由系統根據傳入的參數來完成初始化, 因此不能被賦值
介面裡定義內部類預設使用public static修飾
局部內部類(方法中定義)不能使用存取控制修飾符 final 修飾引用變數時只保證變數引用的地址不變
所有局部變數不能使用static修飾 abstract修飾的類只能被繼承abstract不能和static/private同時修飾某個方法
匿名內部類: new 實現介面() | 父類構造器(實參) {}
匿名內部類適合建立那種只需要使用一次的類 abstract修飾的方法被定義時沒有{}, 只定義不實現abstract修飾的方法必須由子類提供實現(重寫)
J8之前匿名/局部內部類只能訪問final局部變數J8會自動為其訪問的局部變數使用final修飾
枚舉類enum(與class, interface地位相同)
    繼承 可以實現一個或多個介面
    預設繼承java.lang.Enum而不是Object,因此枚舉類不能顯示的繼承其它父類
    Enum類實現了java.lang.Serializable和java.lang.Comparable兩個介面
    使用enume定義、非抽象的枚舉類預設使用final
    構造器 只能使用private(可省略)存取控制符
    枚舉類的執行個體必須在枚舉類第一行顯示列出(‘,’隔開), 否則這個枚舉類永遠都不能產生執行個體. 列出這些執行個體時, 系統會自動添加public static final修飾, 無需程式員顯示添加.
    values()方法 可方便的遍曆所有枚舉值

3. 介面(定義多個類共同的公用行為規範)

[public | 空] interface 介面名 extends 父介面1, 父介面2, ...  (與class不同, 介面支援多繼承)
一個Java源檔案最多隻能有一個public介面, 源檔案的主檔案名必須與該介面一致
介面裡的成員都是public存取權限, 修飾符可省略(系統自動指定), 指定的話只能使用public
成員變數 只能是靜態常量. 總是使用public static final來修飾(可省略, 系統自動使用)
方法 抽象執行個體方法 總是使用public abstract來修飾(可省略), 沒有方法體
類方法(J8) 需要使用static修飾, 不能使用default修飾
預設方法(J8) 需要使用default修飾, 不能使用static修飾
內部類 內部介面, 枚舉. 總是使用public static來修飾(可省略)
[修飾符] class 類名[ extends 父類] implements 介面1, 介面2, ... (介面的實現)
實現介面方法 只能用public修飾, 因為子類重寫父類方法時存取權限必須更大或相等

java--物件導向

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.