四種權限修飾符:
yes可以訪問,no無法訪問
權限修飾符 | public | protected | default | private |
---|---|---|---|---|
同一個類 | yes | yes | yes | yes |
同一個包 | yes | yes | yes | no |
不同包子類 | yes | yes | no | no |
不同包非子類 | yes | no | yes | yes |
final的基本使用:
注意:
abstract 和 final關鍵字不能同時存在,因爲abstract必須覆蓋重寫,final不能覆蓋重寫
1.可以用來修飾一個類
表示當前這個類不能有任何的子類,自然無法重寫覆蓋
public final class 類名稱
2.可以用來修飾一個方法
表示這個方法就是最終方法,也就是不能被覆蓋重寫
public final 返回值 方法名()
3.可以用來修飾一個局部變量
表示這個變量是一個常量,無法更改
對於基本變量來說,不可改變是變量當中的數據不可改變
對於引用變量來說,不可改變是變量當中的地址不可改變
4.可以用來修飾一個成員變量
使用final,這個變量不可改變。
成員變量具有默認值,所以成員變量必須手動賦值
對於final的成員變量,要麼使用直接賦值,要麼通過構造方法賦值。二者選一,注意此時不能用setter方法。
拆箱&&裝箱:
裝箱:
Integer in =new Integer(1)
把基本數據類型轉化成包裝類
拆箱:
in.intvalue+2=3
把包裝類轉化成基本數據類型
自動裝箱:
Integer in=1;
相當於:Integer in =new Integer(1)
把int類型的整數賦值給包裝類。
自動拆箱:
in = in +2
相當於:in.intvalue+2=3
把integer類型數據轉換成int
Int怎麼轉換成字符串:
基本數據類型轉換字符串
1.String str=1+''; 加空格
2.integer.tostring(1) 使用包裝類tostring
3.String.valueof(1) 使用包裝類string
字符串轉換基本數據類型
integer.parseint(str) 包裝類parseint方法
static如何使用:
1.一旦使用了static修飾成員方法,就成爲了 靜態方法,靜態方法不屬於對象,而屬於類。
如果沒有static修飾成員方法,就必須創建對象,然後通過對象才能使用它
如果有了static關鍵字,那麼就不需要創建對象,直接使用類名稱進行調用
2.如果一個成員變量使用了static關鍵字,那麼這個變量就不屬於對象自己,而屬於所在的類。
多個對象共享同一份數據。
3.無論使用成員變量,還是成員方法,如果有了static都推薦使用類名稱調用
靜態變量:類名稱.靜態變量
靜態方法:類名稱.靜態方法()
4.靜態方法不能訪問非靜態變量
因爲:初始化的時候在內存先有的靜態內容,然後有非靜態內容,“先人不知道後人,後人知道先人”
5.靜態方法不能使用this,
因爲:this調用的是當前對象,而此時沒有對象
6.靜態代碼塊用來一次性的對靜態成員變量進行賦值
靜態代碼塊》構造函數》普通方法
內部類如何用:
成員內部類
一個類內部包含另一個類,在裏面的那個類就是成員內部類
內部類訪問外部類,隨意訪問,外用內,需要內部類對象
如何使用成員內部類?有兩種方式
1.間接方式:在外部類的方法中,使用內部類,然後調用時候只調用外部類的方法。
2.直接方式:外部類名稱.內部類名稱 對象名=new 外部類名稱().new 內部類名稱()
內部類如何訪問外部類重複成員變量?
外部類.this.外部類成員變量
局部內部類
一個類定義在一個方法內部,那麼就是一個局部內部類。
因爲只能通過方法調用,所以必須在方法中調用了局部內部類。
局部內部類,如果希望訪問所在方法的局部變量,那麼這個變量必須是有效final的。
類的權限修飾符在定義一個類的規則
外部類:public /default
成員內部類:public protect default private
局部內部類:什麼都不寫
匿名內部類
如果接口的實現類(或者是父類的子類)只需要使用唯一的一次,這種情況就可以省略該類的定義,而改爲匿名內部類,使用這種方式可以省略一個實現類。接口名稱 對象名 =new 接口名稱(){覆蓋重寫所有的抽象方法}
使用注意事項:
只是用一次,可以省略實現類