1.final
- final可修飾所有除構(gòu)造方法之外,表示最終含義不可再賦值修改圆仔。
- final修飾類不可被繼承
public final class fu如此父類不可以被繼承String類也是
- final修飾方法不可以重寫
- final修飾變量叫常量終身只能賦值一次不可修改历造,固定不是默認(rèn)值而是手動(dòng)賦值
- 修飾引用數(shù)據(jù)類型其內(nèi)存地址終身不變不能再被賦值地址也不能為null
- 修飾成員變量賦值有兩種:一種創(chuàng)建時(shí)賦值甩十,一種采用構(gòu)造方法賦值僅可以出現(xiàn)一次等于號(hào)
- 必須在創(chuàng)建對(duì)象之前就final賦值完成set方法不可以賦值因?yàn)槭窃趧?chuàng)建對(duì)象之后才賦值,成員變量在創(chuàng)建對(duì)象完成時(shí)就會(huì)有值因此可以在構(gòu)造方法中賦值吭产。
2.static
- 靜態(tài)侣监,可以用類名直接調(diào)用,和類對(duì)象無(wú)關(guān)
- 對(duì)象特有數(shù)據(jù)臣淤,讓變量在方法和數(shù)據(jù)共享區(qū)(靜態(tài)區(qū))有一塊地址存放
- static修飾之后就是公用橄霉,而不再是特有,父類static int a邑蒋,子類繼承之后修改a值酪劫,另一個(gè)子類在調(diào)用啊a值就是修改后的。
- javac編譯之后的class文件寺董,java 在運(yùn)行的就是類名(main方法和類名掛鉤),類進(jìn)入方法區(qū)后另一塊空間(靜態(tài)區(qū)或者數(shù)據(jù)共享區(qū))加載靜態(tài)成員(跟隨類名)
入口類(含main)進(jìn)入方法區(qū)刻剥,
之后類名掛鉤的靜態(tài)方法main進(jìn)入靜態(tài)區(qū)遮咖,
之后別的類class文件進(jìn)入方法區(qū),
別的類所屬靜態(tài)成員進(jìn)入靜態(tài)區(qū)
之后main方法壓棧運(yùn)行造虏,
靜態(tài)成員已經(jīng)有值但是還沒(méi)創(chuàng)建類
- 靜態(tài)生命周期早于非靜態(tài)(靜態(tài)跟隨類而不是對(duì)象)
- 靜態(tài)中不能調(diào)用非靜態(tài)(靜態(tài)在先御吞,先不能調(diào)用后)
- 靜態(tài)中不允許有this,super漓藕,因?yàn)檫@兩個(gè)面向?qū)ο筇罩椋o態(tài)跟隨類而不是對(duì)象,先不能調(diào)用后
- 靜態(tài)跟隨類生命周期長(zhǎng)有浪費(fèi)內(nèi)存嫌疑
- 應(yīng)用場(chǎng)景:多個(gè)事物之間是否有共同特征享钞,共性數(shù)據(jù)為靜態(tài)變量(例如班級(jí))
- 是否用靜態(tài)方法要看有沒(méi)有調(diào)用非靜態(tài)成員(非靜態(tài)生命周期在靜態(tài)之后)揍诽,沒(méi)有非靜態(tài)則方法用靜態(tài),是以方法中成員變量作參考
3.多態(tài)細(xì)節(jié)調(diào)用
- 編譯是看等于號(hào)左邊的父類,父類有則成功暑脆,無(wú)則失敗
- 運(yùn)行時(shí)候靜態(tài)方法運(yùn)行的是父類靜態(tài)(靜態(tài)跟隨類渠啤,所以是類在調(diào)用方法),非靜態(tài)方法運(yùn)行子類
- 成員變量均是看父類有無(wú)
- 靜態(tài)命名規(guī)則:全部大寫添吗,單詞之間_隔開(kāi)
4.匿名對(duì)象
匿名對(duì)象沒(méi)有引用沥曹,僅能調(diào)用一次,可以作為參數(shù)碟联,也可以作為返回值
5.內(nèi)部類
- 一個(gè)類內(nèi)部再定義一個(gè)類妓美,可以在成員變量位置也可以在局部變量位置
- 內(nèi)部類也是外部類成員,寫在方法中的內(nèi)部類調(diào)用本身的方法需要?jiǎng)?chuàng)建內(nèi)部類對(duì)象
inner.text inn=new inner().new text();
外部類.內(nèi)部類 對(duì)象名=new 外部類().new 內(nèi)部類()鲤孵;
- 調(diào)用同名成員變量區(qū)分
public class inner {
int a = 1;
public class text {
int a = 2;
public void method() {
int a=3;
System.out.println(inner.this.a+" "+this.a+" "+a);
}
}
}
打印是1,2,3
- 內(nèi)部類同樣會(huì)單獨(dú)編譯一個(gè)class文件名有$符號(hào)
- 匿名內(nèi)部類
定義實(shí)現(xiàn)類壶栋,重寫方法,建立實(shí)現(xiàn)類對(duì)象一步完成裤纹,前提是繼承或接口
new person() {
public void method() {
System.out.println("ppppp");
}
}.method;會(huì)打印ppp
new 類名(){
重寫方法
}
6.包委刘,可理解為文件夾
- 是對(duì)文件分類管理
- 取名通常采用公司網(wǎng)址反寫:com.apple.demotext
- 類名全稱會(huì)帶著包名
7.default - 同一包下可以使用,同一包不同類間也可直接使用鹰椒,別的包子類都不可使用父類成員
8.protected
在擁有default權(quán)限情況下锡移,僅能在子類里面使用(不分是否同一個(gè)包)
9.局部代碼塊 - 限制作用域
- 在類中方法外的{}叫做構(gòu)造代碼塊,會(huì)在構(gòu)造方法之前執(zhí)行漆际,new幾次就會(huì)執(zhí)行幾次
- 在構(gòu)造代碼塊加static則是靜態(tài)代碼塊static}{}淆珊,在構(gòu)造代碼塊之前執(zhí)行,不論new創(chuàng)建對(duì)象幾次奸汇,只會(huì)在第一次new對(duì)象時(shí)候執(zhí)行施符。