資源描述:
《java技術講義編程技術篇(7)-李鐵英》由會員上傳分享,免費在線閱讀,更多相關內容在行業(yè)資料-天天文庫。
1、Java技術講義基礎編程技術篇李鐵英其他類與異常處理final最終修飾符,可以用來修飾變量、方法、類等,其功能表示把可變化。也就是,被final修飾后,類不能再被繼承、變量不能在被改變,方法不能再被重寫。final修飾變量一旦final變量修飾了變量后,就需要賦值,該值不能再改變。Java語義中一般用來定義變量為常量。例如:finaldoublePI=3.1415926;在程序中用到PI這個常量時,它的值就是3.1415926。如果再次為final定義的常量賦值,編譯器就會包錯誤。final修飾引用類一旦final修飾引用
2、類型(對象和數組),它只能恒定指向一個對象,無法將其改變指向另一個對象。一個既是static又為final的成員變量只占據一段不能改變的存儲內存空間。final做為方法參數一旦final修飾了方法參數,這預示著就無法在方法體中修改參數值或修改參數所指向的對象引用。1/63Java技術講義基礎編程技術篇李鐵英可以使用final修飾的數據如下圖。final方法final修飾的方法是不能被重寫,可以防止任何子類對該方法的任何修改。注:一般使用fianl修飾的方法無需再修飾為private。因為private是為了隱藏該方法,即不
3、允許其他類,包含其子類都不能訪問,而final為最終方法,即使可以被其他對象引用,也不能修改其方法任何內容。上方法修飾符private和final修飾符二選一即可。final類一旦被final修飾的類就不能被繼承。如果一個類不允許被別人修改,就可以使用final修飾。語法格式:2/63Java技術講義基礎編程技術篇李鐵英將類設置為final形式,類中的所有方法都被隱式設置為final形式,但final類中的成員變量可以被定義為final或非final形式。練習1:在項目中創(chuàng)建FinalClass類,在類中定義doit()方
4、法和變量nubm,在main方法中操作變量numb自增。執(zhí)行結果:運行結果可以說明,final類的成員變量是可以不聲明為final的,可以通過對象改變該變量值,如果繼承和final或重寫該類的方法是不允許的。內部類在JDK1.1版本中,引入了內部類(InnerClass)的概念,它是指3/63Java技術講義基礎編程技術篇李鐵英在一個類的內部可以定義另一個類,外部的類一般稱為外部類(或封裝類)。這樣做的目的是有利于信息封裝,內部類可以用于完成不能被任何其他類共享的實現細節(jié)。內部類和外部類之間存在邏輯上的所屬關系,可以將邏輯
5、上屬于一類的類組織在一起,并控制一個類在另一個類中的可見性。例如下面的代碼:練習2:在Outer類的內部定義一個內部類inner。目的:掌握內部類的定義方法。分析:該程序演示了如何在Outer類的內部定義一個內部類Inner。編譯完成后,將產生兩個文件:outer.classOuter$Inner.class說明:編譯后產生兩個文件,外部類是Outer.class,內部類的文件名是Outerz$Inner.class。故內部的類文件名是:外部類名$內部類文件名內部類是外部類的一個成員,因此,就像外部類的任何成員(例如實例方
6、法)可以訪問外部類中的任何其他成員一樣,內部類也可以訪問其所在的外部類的任何其他成員,無論其是否是私有的。但是,一個關鍵的問題是,內部類實例是依賴于外部類實例而存在的!也就4/63Java技術講義基礎編程技術篇李鐵英是說,為了創(chuàng)建或使用內部類實例,必須先有一個外部類對象。練習3:在外部類Outer的內部創(chuàng)建內部類Inner的對象。目的:掌握在外部類的內部創(chuàng)建內部類對象的方法。執(zhí)行結果:5/63Java技術講義基礎編程技術篇李鐵英內部類在JVM運行示意圖:從上圖可以看出,內部類對象都以屬性的方式記錄著其所依賴的外部類對象的引
7、用,因此可以找到該外部類對象并訪問其成員。該屬性是系統自動為非static的內部類添加的,名稱為“外部類名.this”,例如上圖用粗體表示出來的outer.this。那么,如何在外部類的外部創(chuàng)建內部類對象呢?因為前面講過內部類實例要依賴于外部類實例而存在,所以必須先有一個外部類實例。練習4:在外部類Outer的外部創(chuàng)建內部類Inner的對象。目的:掌握在外部類的外部創(chuàng)建內部類對象的方法。分析:該程序演示了如何在外部類Outer的外部創(chuàng)建內部類Inner的對象。6/63Java技術講義基礎編程技術篇李鐵英執(zhí)行結果:歸納:從上
8、兩個例程中,我們可以總結出創(chuàng)建內部類對象的方法。⒈在外部類的非靜態(tài)方法中,內部類對象可以直接使用new操7/63Java技術講義基礎編程技術篇李鐵英作符創(chuàng)建,這是因為內部類對象所依賴的外部對象就是該非靜態(tài)方法的當前this。⒉在其他無關類的方法中創(chuàng)建內部類對象,必須先顯式獲得外部類的對象,再用“外部類對