Java學習lesson 09
與main方法在同一個類中的方法不是靜態類如何調用?
* ArrayDemo類的對象使用對象調用功能
ArrayDemo ad=new ArrayDemo();
但由於ArrayDemo為測試類一般要創建其他對象,用其他類對象調用其他類中的功能,所以需要 提供一個專門操作數組的工具類
若工具類的構造方法被private修飾那麽無法創建對象要想調用這個類中的方法,使用static修 飾直接用類名調用
形參和返回值問題研究
*形式參數:
*基本數據類型,需要什麽數據類型,在實際傳參的時候就傳什麽數據類型,形式數據的 改變對實際參數沒有影響
*如果實際參數是為引用類型,那麽要對這個類創建一個對象
*具體類:創建該類的對象
*抽象類:需要創建該抽象類的子類(抽象類多態)
*接口:由於接口不能實例化,需要定義接口子實現類,然後通過子實現類進行實 例化
*返回值:
*具體類:直接返回該類對象(通常使用匿名對象)
*抽象類:需要返回的是該類的子類的子類對象
*接口:需要接口對應的子實現類對象(可以用匿名對象實現)
內部類
在一個類中定義另一個類
*特點:
*內部類可以直接訪問外部類的成員包括私有的
*外部類要訪問內部類的成員必須創建內部類的對象訪問該類的成員
在測試類訪問內部類成員的格式方法:
外部類名.內部類名 對象名=外部類對象名.內部類對象名
*分類:
*成員內部類:處在外部類成員的位置
成員內部類的修飾符:prinvate(保證數據的安全性),static
對於靜態的一個成員內部類來說不管是靜態成員內部類中成員方法是靜態的還是非靜態的,要 訪問外部類的成員變量,該變量必須被static修飾
*局部內部類:定義在外部類的局部變量位置
無論是局部成員內部類還是成員內部類(非靜態)都可以直接訪問外部類成員包括私有的
問題:
*局部內部類訪問局部變量為什麽會出現問題?
*當前局部變量報錯,必須用final修飾為什麽?
這是由於局部變量是隨著方法的調用而生成的,隨著方法的調用完而消失的,而現在在局部 位置有一個局部內部類它要在自己的成員方法位置訪問,必須將變量變成一個常量(需要 用final修飾:自定義常量)這樣的變量值永遠是固定的
匿名內部類:
是內部類的簡化版格式
前提條件:必須存在一個類(可以是具體類,也可以是一個抽象類)
書寫格式:new 接口或類名(){
方法重寫;
}
當匿名內部類只有一個方法時可以直接new[](){ }.方法名()
當匿名內部類有兩個或兩個以上的方法時:
內部類名 對象名=new 內部類名();
實質:繼承了該類或是實現了該接口的一個子類對象
Java學習lesson 09