java中的内部类
当前位置:以往代写 > JAVA 教程 >java中的内部类
2019-06-14

java中的内部类

java中的内部类

在Java 1.1中,可将一个类界说置入另一个类界说中。这就叫作“内部类”。内部类对我们很是有用,因为操作它可对那些逻辑上彼此接洽的类举办分组,并可节制一个类在另一个类里的“可见性”。然而,我们必需认识到内部类与以前报告的“合成”要领存在着基础的区别。
凡是,对内部类的需要并不是出格明明的,至少不会当即感受到本身需要利用内部类。在本章的末端,先容完内部类的所有语法之后,各人会发明一个出格的例子。通过它应该可以清晰地认识到内部类的长处。
建设内部类的进程是平淡无奇的:将类界说置入一个用于封装它的类内部(若执行这个措施碰着贫苦,请拜见第3章的3.1.2小节“赋值”):
 

//: Parcel1.java
// Creating inner classes
package c07.parcel1;

public class Parcel1 {
  class Contents {
    private int i = 11;
    public int value() { return i; }
  }
  class Destination {
    private String label;
    Destination(String whereTo) {
      label = whereTo;
    }
    String readLabel() { return label; }
  }
  // Using inner classes looks just like
  // using any other class, within Parcel1:
  public void ship(String dest) {
    Contents c = new Contents();
    Destination d = new Destination(dest);
  }  
  public static void main(String[] args) {
    Parcel1 p = new Parcel1();
    p.ship("Tanzania");
  }
} ///:~

若在ship()内部利用,内部类的利用看起来和其他任何类都没什么别离。在这里,独一明明的区别就是它的名字嵌套在Parcel1内里。但各人不久就会知道,这其实并非独一的区别。
更典范的一种环境是,一个外部类拥有一个非凡的要领,它会返回指向一个内部类的句柄。就象下面这样:
 

//: Parcel2.java
// Returning a handle to an inner class
package c07.parcel2;

public class Parcel2 {
  class Contents {
    private int i = 11;
    public int value() { return i; }
  }
  class Destination {
    private String label;
    Destination(String whereTo) {
      label = whereTo;
    }
    String readLabel() { return label; }
  }
  public Destination to(String s) {
    return new Destination(s);
  }
  public Contents cont() { 
    return new Contents(); 
  }
  public void ship(String dest) {
    Contents c = cont();
    Destination d = to(dest);
  }  
  public static void main(String[] args) {
    Parcel2 p = new Parcel2();
    p.ship("Tanzania");
    Parcel2 q = new Parcel2();
    // Defining handles to inner classes:
    Parcel2.Contents c = q.cont();
    Parcel2.Destination d = q.to("Borneo");
  }
} ///:~

若想在除外部类非static要领内部之外的任那里所生成内部类的一个工具,必需将谁人工具的范例设为“外部类名.内部类名”,就象main()中展示的那样。

    关键字:

在线提交作业