資源描述:
《Java基礎高級類特性》由會員上傳分享,免費在線閱讀,更多相關內容在教育資源-天天文庫。
1、高級類特性本章內容static關鍵字final關鍵字抽象類(abstract關鍵字)接口(interface關鍵字)內部類本章內容static關鍵字靜態(tài)屬性靜態(tài)初始化靜態(tài)方法單子模式理解main方法的語法final關鍵字抽象類(abstract關鍵字)接口(interface關鍵字)內部類當我們編寫一個類時,其實就是在描述其對象的屬性和行為,而并沒有產(chǎn)生實質上的對象,只有通過new關鍵字才會產(chǎn)生出對象,這時系統(tǒng)才會分配內存空間給對象,其方法才可以供外部調用。我們有時候希望無論是否產(chǎn)生了對象或無論產(chǎn)生了多少對象的情況下,某
2、些特定的數(shù)據(jù)在內存空間里只有一份,例如所有的中國人都有個國家名稱,每一個中國人都共享這個國家名稱,不必在每一個中國人的實例對象中都單獨分配一個用于代表國家名稱的變量。關鍵字static關鍵字staticclassCircle{privatedoubleradius;publicCircle(doubleradius){this.radius=radius;}publicdoublefindArea(){returnMath.PI*radius*radius;}}創(chuàng)建兩個Circle對象Circlec1=newCircle
3、(2.0);//c1.radius=2.0Circlec2=newCircle(3.0);//c2.radius=3.0Circle類中的變量radius是一個實例變量(instancevariable),它屬于類的每一個對象,不能被同一個類的不同對象所共享。上例中c1的radius獨立于c2的radius,存儲在不同的空間。c1中的radius變化不會影響c2的radius,反之亦然。如果想讓一個類的所有實例共享數(shù)據(jù),請用類變量關鍵字static在Java類中聲明變量、方法和內部類時,可使用關鍵字static做為修飾符
4、。static標記的變量或方法由整個類(所有實例)共享,如訪問控制權限允許,可不必創(chuàng)建該類對象而直接用類名加‘.’調用。static成員也稱類成員或靜態(tài)成員,如:類變量、類方法、靜態(tài)方法等。類變量(classVariable)類變量(類屬性)由該類的所有實例共享publicclassPerson{privateintid;publicstaticinttotal=0;publicPerson(){total++;id=total;}}Person+total:int=0-id:intp1:Personid=1p2:Per
5、sonid=2<><>Personp1=newPerson();Personp2=newPerson();類屬性類似于全局變量類屬性應用舉例classPerson{privateintid;publicstaticinttotal=0;publicPerson(){total++;id=total;}publicstaticvoidmain(Stringargs[]){PersonTom=newPerson()Tom.id=0;total=100;//不用創(chuàng)建對象就可以訪問
6、靜態(tài)成員}}publicclassOtherClass{publicstaticvoidmain(Stringargs[]){Person.total=100;//不用創(chuàng)建對象就可以訪問靜態(tài)成員//訪問方式:類名.類屬性類名.類方法System.out.println(Person.total);Personc=newPerson();System.out.println(c.total);//輸出101}}classPerson{privateintid;privatestaticinttotal=0;publicst
7、aticintgetTotalPerson(){returntotal;}publicPerson(){total++;id=total;}}publicclassTestPerson{publicstaticvoidmain(String[]args){System.out.println("Numberoftotalis"+Person.getTotalPerson());//沒有創(chuàng)建對象也可以訪問靜態(tài)方法Personp1=newPerson();System.out.println("Numberoftotalis
8、"+Person.getTotalPerson());}}類方法(classMethod)沒有對象的實例時,可以用類名.方法名()的形式訪問由static標記的類方法。Theoutputis:Numberoftotalis0Numberoftotalis1類方法在static方法內部只能訪問類的static屬性,不能