JavaSE復習(一)繼承多態與常用API
阿新 • • 發佈:2019-04-12
運行 指向 默認 開始 表達 java 存在 parse 其中
繼承與多態
- 在父子類的繼承關系當中,如果成員變量重名,則創建子類對象時,訪問有兩種方式:
- 直接通過子類對象訪問成員變量:等號左邊是誰,就優先用誰,沒有則向上找
- 間接通過成員方法訪問成員變量:該方法屬於誰,就優先用誰,沒有則向上找
- 從Java 8 開始,接口裏允許定義默認方法
格式
public default 返回值類型 方法名稱(參數列表){ 方法體 }
備註:接口當中的默認方法,可以解決接口升級的問題
從Java 9 開始,接口中允許定義私有方法
- 多態的代碼中,成員變量和成員方法的訪問規則
- 成員變量:編譯看左邊,運行還看左邊
- 成員方法:編譯看左邊,運行看右邊
多態
體現多態性:父類引用指向子類對象
好處:無論右邊new的時候換成哪個子類對象,等號左邊調用方法都不會變化
內部類
成員內部類
內用外,隨意訪問;外用內,需要內部類對象
使用方式:
- 間接方式:在外部類的方式當中,使用內部類;然後調用外部類的方法
直接方式,公式:
【外部類名稱.內部類名稱 對象名 = new 外部類名稱().new 內部類名稱();】
局部內部類(包含匿名內部類)
要訪問所在方法的局部變量,那麽這個局部變量必須是【有效final】的。
從Java 8 開始,只要局部變量事實不變,那麽final關鍵字可以省略
- 權限修飾符規則:
- 外部類:public、(default)
- 成員內部類:public、protected、(default)、private
- 局部內部類:什麽都不寫
常用API
String
String和int相互轉換
int--->String
num + ""
低效String.valueOf(num)
Integer.toString(num)
String--->int
Integer.parseInt(str)
Integer.valueOf(str).intValue()
- 雙引號直接寫的字符串在常量池當中,new出來的不在池中
- 常量.equals字符串時建議把常量放前面,避免因字符串為空導致的空指針異常
- 分割字符串的
split()
方法的參數是一個正則表達式,以"."分割是要寫成"\\.
" 輸出一維數組:
Arrays.toString(arr)
輸出二維數組:
Arrays.deepToString(str)
String 為什麽是 final 的
實現字符串池:不可變才能實現字符串池,如果字符串是可變的,那麽一個引用操作改變了對象的值,對其他引用會有印象
安全性:這些核心類的內部方法的實現並不是Java本身編寫的,好多都是調用的操作系統本地的API,如果String可以被繼承重寫,就有可能被惡意的重寫其中的方法,造成安全隱患;同時因為不可變,使得String是多線程安全的
效率:如果已經存在這個字符串常量便不會再創建,直接拿來用
JavaSE復習(一)繼承多態與常用API