易截截图软件、单文件、免安装、纯绿色、仅160KB

Java中的内部类和匿名类(转)

[摘要]
提起Java内部类(Inner
Class)可能很多人不太熟悉,实际上类似的概念在C++里也有,那就是嵌套类(Nested
Class),关于这两者的区别与联系,在下文中会有对比。
[关键字] Java
内部类
匿名类

  有人会问,如果内部类里的一个成员变量与外部类的一个成员变量同名,也即外部类的同名成员变量被屏蔽了,怎么办?没事,Java里用如下格式表达外部类的引用:
  outerClass.this
  有了它,我们就不怕这种屏蔽的情况了。
  * 静态内部类
  和普通的类一样,内部类也可以有静态的。不过和非静态内部类相比,区别就在于静态内部类没有了指向外部的引用。这实际上和C++中的嵌套类很相像了,Java内部类与C++嵌套类最大的不同就在于是否有指向外部的引用这一点上,当然从设计的角度以及以它一些细节来讲还有区别。
  除此之外,在任何非静态内部类中,都不能有静态数据,静态方法或者又一个静态内部类(内部类的嵌套可以不止一层)。不过静态内部类中却可以拥有这一切。这也算是两者的第二个区别吧。
  * 局部内部类
  是的,Java内部类也可以是局部的,它可以定义在一个方法甚至一个代码块之内。
  public class Goods1 {
  public Destination dest(String s) {
  class GDestination implements Destination {
  private String
label;
  private GDestination(String whereTo) {
  label =
whereTo;
  }
  public String readLabel() { return label; }
  }
  return new GDestination(s);
  }
  public
static void main(String[] args) {
  Goods1 g= new Goods1();
  Destination d = g.dest("Beijing");
  }
  }
  上面就是这样一个例子。在方法dest中我们定义了一个内部类,最后由这个方法返回这个内部类的对象。如果我们在用一个内部类的时候仅需要创建它的一个对象并创给外部,就可以这样做。当然,定义在方法中的内部类可以使设计多样化,用途绝不仅仅在这一点。
  下面有一个更怪的例子:
  public class Goods2{
  private void
internalTracking(boolean b) {
  if(b) {
  class TrackingSlip {
  private String id;
  TrackingSlip(String s) {
  id =
s;
  }
  String getSlip() { return id; }
  }
  TrackingSlip ts = new TrackingSlip(&q


相关文档:

启动非java虚拟机方式下运行matlab

在非java虚拟机下运行matlab据说可以扩大内存,启动非java虚拟机下运行 matlab的方法有:
一.
1、右建点matlab快捷方式,选属性 ......

java面试题及答案(基础题122道,代码题19道)

JAVA相关基础知识
1、面向对象的特征有哪些方面
1.抽象:
抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节。抽象包括两个方面,一是过程抽象,二是数据抽象。
2.继承:
继承是一种联结类的层次模型,并 ......

web service:java 和 .net之间互操作

通过Web Service混合.NET和Java技术往往很容易,但Web Service并非是.NET和Java互操作的万灵丹。Web Service在集成独立的跨网络通信的组件时非常有用,在简单的调用/返回情景中,涉及的数据类型数量非常有限,且Web Service是基于标准的,混合.NET和Java技术通常显得很简单,因此有人认为Web Serv ......

Delphi时间和Java时间的转换类。

这样一来,Delphi使用Webservice和JAVA通讯时,可以将DELPHI的时间直接传给JAVA。从而免去了时间字符串parse之间的消耗,提高的程序效率。
Delphi时间实质就是double类型,整数部分表示天,小数部分表示当天时间,每毫秒为1/86400000。考虑到时区的转换后,JAVA和DELPHI时间之间的转换类如下:
import java.util.Calendar ......

Java如何每5秒生成一个随机数


import java.util.Random;   
import java.util.Timer;   
import java.util.TimerTask;   
  
/**  
 * Java如何每5秒生成一个随机数  
 *   
 * @author Java人(java2000.net)  
 */&nbs ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号