您现在的位置是:首页 >

浅析Java内部类在GUI设计中的作用(1)

火烧 2021-12-14 10:53:58 1038
浅析Java内部类在GUI设计中的作用 1   对于Java内部类 大家实际上了解不多 在这里我们以实际代码的形式 为大家详细介绍Java内部类在GUI设计的作用   Java内部类其实在J EE编程

浅析Java内部类在GUI设计中的作用(1)  

  对于Java内部类 大家实际上了解不多 在这里我们以实际代码的形式 为大家详细介绍Java内部类在GUI设计的作用

  Java内部类其实在J EE编程中使用较少 不过在窗口应用编程中特别常见 主要用来事件的处理 其实 做非GUI编程 内部类完全可以不用

  内部类的声明 访问控制等于外部类有所不同 要灵活使用内部类来编写程序 还是有相当难度的 Java发明了这种难懂的玩意儿 在其他语言中是没有的 但是在Java中 内部类也相当的重要 尤其做GUI开发时候 事件的响应处理全靠内部类了

  内部类所做的功能使用外部类也同样可以实现 只是有时候内部类做的更巧妙些

  内部类按照其所在位置不同 可分为以下几种

   (普通的)内部类(最常见的内部类 内部类的定义与类成员平级 )

   方法内部类

   匿名类

   静态内部类

   接口内部类

  一 内部类声明与访问

   内部类直接在类的内部进行声明 可以声明为private protected public或者默认访问权限 这个访问权限约定和外部类完全一样

   内部类自动拥有对其外围类所有成员(方法 属性)的访问权 如果内部类和外部类成员的名字完全相同 在内部类方法中要访问外部类成员 则需要使用下面的方式来访问 外部类名 this 外部成员名 例如Outer this i++; (看例子)

   必须使用外部类对象来创建内部类对象 而不是直接去new一个

  格式为 外部对象名 new 内部类构造方法

  比如要创建一个内部类iner对象 需要这么做

  Outer outer = new Outer();

  Outer Inner iner = outer new Inner();

  /**

  * 内部类创建与初始化

  *

  * @author leizhimin : :

  */

浅析Java内部类在GUI设计中的作用(1)

  public class Outer {

  private int i = ;

  private int y = ;

  Outer() {

  System out println( 调用Outer构造方法 outer );

  }

  public void sayMsg() {

  System out println( Outer class! );

  }

  class Inner {

  int i = ;

  Inner() {

  System out println( 调用Inner构造方法 inner );

  }

  void innerMsg() {

  System out println( >>>>>Inner class! );

  sayMsg();

  //访问内部类自己的成员i 也可以写成 this i++

  this i++;

  //访问外部类的成员 i和y

  Outer this i++;

  y ;

  }

  int getI() {

  return i;

  }

  }

  public void test() {

  Inner in = new Inner();

  in innerMsg();

  }

  public int getI() {

  return i;

  }

  public void setI(int i) {

  this i = i;

  }

  }

  class Test {

  public static void main(String[] args) {

  Outer outer = new Outer();

  outer test();

  System out println(outer getI());

  System out println( );

  Outer Inner iner = outer new Inner();

  iner innerMsg();

  System out println(iner getI());

  System out println( );

  System out println(outer getI());

  }

  }

  运行结果

  调用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 = outer genFoo();

  Bar b = outer genBar();

  f say();

  b readme();

  }

  }

  class Outer {

  private class FooImpl implements Foo {

  public void say() {

  System out println( say foo! );

  }

  }

  private class BarImpl implements Bar {

  public void readme() {

  System out println( 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();

  Outer Bar b = o genBar();

  b readme();

  }

  }

  class Outer {

  protected class Foo {

  protected void say() {

  System out println( say foo! );

  }

  private void test() {

  System out println( test );

  }

  }

  protected class Bar {

  protected void readme() {

  System out println( say bar! );

  new Foo() test();

  }

  }

  public Foo genFoo() {

  return new Foo();

  }

  public Bar genBar() {

  return new Bar();

  }

lishixinzhi/Article/program/Java/hx/201311/26152  
永远跟党走
  • 如果你觉得本站很棒,可以通过扫码支付打赏哦!

    • 微信收款码
    • 支付宝收款码