内部类

//: 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()中展示的那样。 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值