熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Java核心技術 >> 正文

淺析Java內部類在GUI設計中的作用(1)

2013-11-23 19:01:22  來源: Java核心技術 

  對於Java內部類大家實際上了解不多在這裡我們以實際代碼的形式為大家詳細介紹Java內部類在GUI設計的作用

  Java內部類其實在JEE編程中使用較少不過在窗口應用編程中特別常見主要用來事件的處理其實做非GUI編程內部類完全可以不用

  內部類的聲明訪問控制等於外部類有所不同要靈活使用內部類來編寫程序還是有相當難度的Java發明了這種難懂的玩意兒在其他語言中是沒有的但是在Java中內部類也相當的重要尤其做GUI開發時候事件的響應處理全靠內部類了

  內部類所做的功能使用外部類也同樣可以實現只是有時候內部類做的更巧妙些

  內部類按照其所在位置不同可分為以下幾種

  (普通的)內部類(最常見的內部類內部類的定義與類成員平級)

  方法內部類

  匿名類

  靜態內部類

  接口內部類

  一內部類聲明與訪問

  內部類直接在類的內部進行聲明可以聲明為privateprotectedpublic或者默認訪問權限這個訪問權限約定和外部類完全一樣

  內部類自動擁有對其外圍類所有成員(方法屬性)的訪問權如果內部類和外部類成員的名字完全相同在內部類方法中要訪問外部類成員則需要使用下面的方式來訪問外部類名this外部成員名例如Outerthisi++; (看例子)

  必須使用外部類對象來創建內部類對象而不是直接去new一個

  格式為外部對象名new 內部類構造方法

  比如要創建一個內部類iner對象需要這麼做

  Outer outer = new Outer();

  OuterInner iner = outernew Inner();

  /**

  * 內部類創建與初始化

  *

  * @author leizhimin ::

  */

  public class Outer {

  private int i = ;

  private int y = ;

  Outer() {

  Systemoutprintln(調用Outer構造方法outer);

  }

  public void sayMsg() {

  Systemoutprintln(Outer class!);

  }

  class Inner {

  int i = ;

  Inner() {

  Systemoutprintln(調用Inner構造方法inner);

  }

  void innerMsg() {

  Systemoutprintln(>>>>>Inner class!);

  sayMsg();

  //訪問內部類自己的成員i也可以寫成 thisi++

  thisi++;

  //訪問外部類的成員 i和y

  Outerthisi++;

  y;

  }

  int getI() {

  return i;

  }

  }

  public void test() {

  Inner in = new Inner();

  ininnerMsg();

  }

  public int getI() {

  return i;

  }

  public void setI(int i) {

  thisi = i;

  }

  }

  class Test {

  public static void main(String[] args) {

  Outer outer = new Outer();

  outertest();

  Systemoutprintln(outergetI());

  Systemoutprintln();

  OuterInner iner = outernew Inner();

  inerinnerMsg();

  Systemoutprintln(inergetI());

  Systemoutprintln();

  Systemoutprintln(outergetI());

  }

  }

  運行結果

  調用Outer構造方法outer

  調用Inner構造方法inner

  >>>>>Inner class! Outer class!

  調用Inner構造方法inner

  >>>>>Inner class! Outer class! Process finished with exit code

  二內部類與接口

  內部類可以實現接口

  內部類之間相互可見但並非內部類之間方法都可見

  public interface Foo{

  void say();

  }

  public interface Bar {

  void readme();

  }

  /**

  * 內部類實現接口

  *

  * @author leizhimin ::

  */

  public class Test {

  public static void main(String[] args) {

  Outer outer = new Outer();

  Foo f = outergenFoo();

  Bar b = outergenBar();

  fsay();

  breadme();

  }

  }

  class Outer {

  private class FooImpl implements Foo {

  public void say() {

  Systemoutprintln(say foo!);

  }

  }

  private class BarImpl implements Bar {

  public void readme() {

  Systemoutprintln(say bar!);

  }

  }

  public Foo genFoo() {

  return new FooImpl();

  }

  public Bar genBar() {

  return new BarImpl();

  }

  }

  輸入結果

  say foo!

  say bar!

  Process finished with exit code

  三訪問權限

  外部類分兩種

  一種嵌入了內部類聲明代碼外部類稱為直接外部類 另一種是與內部類沒有任何關系的外部類稱為外部類

  在同一個直接外部類中內部類之間所有的方法都是相互可見的包含在直接外部類的main()中可見

  在外部類中要看到一個類的內部類成員則至少要求這個內部類的class和成員權限大於或等於protected

  /**

  * 內部類實現接口

  *

  * @author leizhimin ::

  */

  public class Test {

  public static void main(String[] args) {

  Outer o = new Outer();

  OuterBar b = ogenBar();

  breadme();

  }

  }

  class Outer {

  protected class Foo {

  protected void say() {

  Systemoutprintln(say foo!);

  }

  private void test() {

  Systemoutprintln(test);

  }

  }

  protected class Bar {

  protected void readme() {

  Systemoutprintln(say bar!);

  new Foo()test();

  }

  }

  public Foo genFoo() {

  return new Foo();

  }

  public Bar genBar() {

  return new Bar();

  }

  }


From:http://tw.wingwit.com/Article/program/Java/hx/201311/26152.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.