?? day04.txt
字號(hào):
CoreJava(day04) 2007-12-6 --- 李艷
作業(yè)講解:(課堂代碼:MyDate.java)
從今天開始學(xué)習(xí)java高級特性
1、static(靜態(tài)):
靜態(tài)的屬性都存儲(chǔ)在池里面。在類加載的時(shí)候存入。
static可以修飾屬性,方法,內(nèi)部類,語句塊
靜態(tài)屬性:(課堂代碼:TestCount.java)
例:public class TestCount {
private int count1=0;
private static int count2=0; //類變量
}
TestCount t1=new TestCount();
t1.count1; //普通屬性的調(diào)用方式
TestCount.count2; 靜態(tài)屬性的使用方法是用用類名調(diào)用,也可以用對象來調(diào)用,但建議用類名調(diào)用
靜態(tài)方法中不能使用非靜態(tài)的屬性。靜態(tài)方法里不能使用this,是因?yàn)殪o態(tài)方法里根本沒有this.
例:public static void test1(){
//count1不可用,count2可以用
}
靜態(tài)方法不能被非靜態(tài)的方法覆蓋。
靜態(tài)方法可以被子類的靜態(tài)方法覆蓋,但覆蓋以后就沒有多態(tài)了。
靜態(tài)語句塊:(課堂代碼:TestStatic.java,TestTestStatic.java)
static{ //類加載的時(shí)候調(diào)用
System.out.println("static is called");
}
{ //構(gòu)造對象的時(shí)候調(diào)用
System.out.println("is called");
}
static語句塊>語句塊
靜態(tài)初始化代碼塊在類加載的時(shí)候運(yùn)行,所以只執(zhí)行一次。聲明引用時(shí)不會(huì)進(jìn)行類加載。
靜態(tài)初始化代碼塊和靜態(tài)方法一樣也不能訪問非靜態(tài)成員。
什么情況下算類加載:類在創(chuàng)建一個(gè)實(shí)例,或用類名. 調(diào)用屬性或方法的時(shí)候會(huì)類加載,即需要運(yùn)行的時(shí)候才會(huì)類加載
加載子類會(huì)先加載父類,語句塊的調(diào)用也是先父后子。(課堂代碼:Person.java)(課堂代碼:Student.java)(課堂代碼:Test.java)
先加載父類再加載子類,然后再構(gòu)造(構(gòu)造也是先父后子),既先加載后構(gòu)造
靜態(tài)的好處就是可以用類名.方式去調(diào)用
單例設(shè)計(jì)模式:(課堂代碼:Singleton.java)
保證實(shí)例唯一,節(jié)省內(nèi)存,構(gòu)造方法私有 static+private+public
對象不會(huì)改變
2、final: (課堂代碼:TestFinal.java)
final可以修飾變量、方法、類。
final變量(實(shí)例變量(屬性),局部變量):
final等于是把棧給鎖定了
final修飾的變量,一旦賦值,不能改變,表示屬性的值是不可變的
對于實(shí)例變量是一個(gè)final的,要么在初始化屬性時(shí)賦值,要么在構(gòu)造方法中賦值,只能一次且還不能不賦值,即必須在構(gòu)造對象后有值
若是用final static修飾的常量,必須在類加載后有值,即在聲明時(shí)賦值或者在靜態(tài)初始化代碼塊中賦值,盡量在聲明時(shí)賦值。習(xí)慣上常量用大寫。
final方法:表示這個(gè)方法是最終的方法,不能在子類中去覆蓋這個(gè)方法
final類:表示這個(gè)類不能被繼承,不能有子類,是斷子絕孫類。
3、訪問權(quán)限:
訪問范圍 子類是否能繼承 | 嚴(yán)
|
private 本類內(nèi)部訪問 不能繼承 |
|
不寫(default) 本類+同包 不一定,要看子類和父類是否同包 |
|
protected 本類+同包+不同包子類 子類能繼承 |
|
public 公開 能繼承 | 寬
public,final,不寫(default),可以修飾類
public,private,protected,不寫(default),static,final 可以修飾屬性,一般會(huì)用private,static,final
public,private,protected,不寫(default),static,final 可以修飾方法。
public,private,protected,不寫(default),可以修飾構(gòu)造器
4、Object類:
全稱:java.lang.Object
equals:(課堂代碼:Student1.java,TestStudent.java)
public boolean equals(Object obj): 判斷兩個(gè)對象內(nèi)容是否“相等”。
==(雙等號(hào)):判斷的是地址,Object里的equals方法和==判斷的是一樣的,所以要想比較自己寫的類的內(nèi)容是否相同,就要重寫equals方法
.equals :判斷的是內(nèi)容
重寫equals方法時(shí):
1、判斷是否為null if(obj==null) return false;
2、判斷類型是否兼容 if(obj instanceof 類)
3、強(qiáng)制類型轉(zhuǎn)換: 判斷每一個(gè)不可能會(huì)重復(fù)的屬性:簡單類型用==,對象類型用.equals,若每一個(gè)屬性內(nèi)容都相等就可以返回true.
繼承:代碼復(fù)用,代碼維護(hù)
多態(tài)可以使參數(shù)傳遞靈活、簡潔,定標(biāo)準(zhǔn)
多態(tài)+重寫可以幫助父子類之間的傳遞更方便、更靈活。
重載:便于用戶使用
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -