利用內部類及匿名類優(yōu)化Java 程序代碼_第1頁
利用內部類及匿名類優(yōu)化Java 程序代碼_第2頁
利用內部類及匿名類優(yōu)化Java 程序代碼_第3頁
利用內部類及匿名類優(yōu)化Java 程序代碼_第4頁
利用內部類及匿名類優(yōu)化Java 程序代碼_第5頁
已閱讀5頁,還剩1頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、利用內部類及匿名類優(yōu)化 Java 程序代碼【摘要】 內部類是定義在其他類內部的類,它有靜態(tài)內部類與非靜態(tài)內部類兩 種。內部類可以訪問外部類的成員,但外部類不能直接訪問內部類的成員。 由內部類可以引申出匿名內部類, 匿名內部類可以極大提高編程 效率,改善程序的可讀性?!娟P鍵詞】內部類;內部匿名類;外部類0.引言內部類是指把一個類定義在另一個類的類體中。里面的類被稱為內部類。內 部類作為外部類的一個成員而存在的。內部類可用靜態(tài)修飾,也可用 protected 和 private 修飾。 通過內部類可以繼承某個類或實現(xiàn)某個接口, 以減少程序代碼 和增強程序可讀性; 內部類都能獨立地實現(xiàn)接口, 如果外

2、部類實現(xiàn)了某接口, 這 時的內部類相當于實現(xiàn)了“多重繼承”。1.內部類內部類主要分為靜態(tài)內部類和非靜態(tài)內部類。1.1 非靜態(tài)內部類非靜態(tài)內部類可以直接使用外部類的成員, 可用 public/private/default 權限修飾符,但不能定義靜態(tài)成員。例:public class Outerint i=10;static int j=20;public void outer_f1(public static void outer_f2(class Innervoid inner_f1(int i=30;outer_f1(;outer_f2(;1在內部類中,可以直接訪問外部類的成員及變量如在

3、Inner 類中:outer_f1(; outer_f2(;public void outer_f3(Inner inner=new Inner(;inner.inner_f1(;1.2 靜態(tài)內部類(嵌套類非靜態(tài)內部類的對象隱含地保存了一個引用指向創(chuàng)建它的外部類對象。 當不需要內部類對象與其外部類對象之間有聯(lián)系, 將內部類聲明為 static , 通常稱為 嵌套類。靜態(tài)內部類可以用 public , protected , private 修飾,靜態(tài)內部類中 可以定義靜態(tài)或者非靜態(tài)的成員。 與非靜態(tài)內部類的區(qū)別在于要創(chuàng)建靜態(tài)內部類 的對象, 不需要通過其外部類的對象來創(chuàng)建; 靜態(tài)內部類的對象不

4、能訪問外部類 的非靜態(tài)成員。靜態(tài)內部類只能訪問外部類的靜態(tài)成員(如在 inner_f1(中訪問了外部類 的靜態(tài)成員變量 i 和靜態(tài)成員方法 outer_f1( , 而不能訪問外部類的非靜態(tài)成 員。1 外部類訪問內部類的靜態(tài)成員外部類訪問內部類的靜態(tài)成員的形式為:內部類 . 靜態(tài)成員,如方法 outer_f3(中 Inner.inner_i。2 外部類訪問內部類的非靜態(tài)成員外部類訪問內部類的非靜態(tài)成員通過內部類的對象進行。 如:方法 outer_f3(中 Inner inner=new Inner(; inner.inner_f2(;先創(chuàng)建內部類的對象 inner , 然后通過 inner 來訪

5、問 innner_f2(??梢灾苯觿?chuàng)建:Outer.Inner in=new Outer.Inner(;而不需要通過生成外 部類對象來生成。 實際上靜態(tài)內部類成為了一個頂級類 (是一個包含內部類而它 自己并沒有被嵌套到其他類中的類。2.匿名內部類沒有類名的內部類就是匿名類。 通常用一條語句完成匿名類的定義與實例創(chuàng) 建。2.1 什么時候使用匿名類類定義代碼段很短;只需要創(chuàng)建該類的一個實例;類的定義代碼與類的使用 代碼緊鄰。使用匿名內部類是應注意:匿名內部類不能有構造方法; 不能定義 任何靜態(tài)成員、方法和類; 不能是 public , protected , private , static 。

6、2.2 匿名內部類一個匿名內部類一定是在 new 的后面,用其隱含實現(xiàn)一個接口或繼承一個 類。下面的例子完成窗口的關閉功能,由內部類改為匿名類來實現(xiàn):例 1:用內部類窗口的關閉事件。public class TestWindowClose extends Framepublic TestWindowClose(super (;addWindowListener (new WindowClose(;setSize (200, 100;setVisible (true ;class WindowClose extends WindowAdapterpublic void windowClosing

7、(WindowEvent epublic static void main(String argsTestWindowClose t=new TestWindowClose(;例 2:改用匿名內部類來實現(xiàn)窗口的關閉事件,代碼如下。public class TestWindowClose extends Framepublic TestWindowClose(super (;addWindowListener (new WindowAdapter(public void windowClosing(WindowEvent edispose (; System.exit (0;setSize (200, 100; setVisible (true ;public static void main(String argsTestWindowClose t=new Test

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論