再回首Java第十天

内部类

大部分时候,我们把类定义成一个独立的程序单元。在某些情况下,我们需要把一个类放在另一个类的内部定义,这个定义在其它类内部的类被称为内部类(嵌套类),包含内部类的类称为外部类(宿主类)。内部类有如下作用

  • 内部类提供了更好的封装,可以把内部类隐藏在外部类之内,不允许同包的其它类访问。假设创建Cow这个类,需要组合CowLeg的属性,CowLeg属性只有在Cow类中有效,离开了Cow类就没有意义,这种情况下可以把CowLeg定义成Cow的内部类,不允许其它外部的类访问
  • 内部类成员可以直接访问外部内的私有数据,因为内部类被当成了其外部类的成员,同一个类的成员间可以相互访问。但外部内不能访问内部类的实现细节,如属性。要访问必须创建内部类的对象。
  • 匿名内部类合适创建那些仅需要使用一次的类
时间: 2024-08-07 17:02:23

再回首Java第十天的相关文章

再回首Java第二十六天

推回输入流在Java输入.输出流体系中有两个特殊的流与众不同,就是PushbackInputStream/PashbackReader,它们都提供了如下三个方法:?void unread(byte[]/char[] buf):将以一个字节/字符数组内容推回到推回缓冲区里,从而允许重复读取刚刚读取的内容.?void unread(byte[] /char[] buf, int off,int ben):把一个字节/字符数组从off开始,长度为len字节/字符的内容推回到推回缓冲区里,从而允许重复读

再回首Java第二十五天

流的分类按照流的流向来分,可以分为输入流和输出流?输入流:只能从中读取数据,不能向其写数据?输出流:只能向其写数据,不从能从中读数据 Java输入流主要有InputStream和Reader作为基类,Java输出流主要以OutputStream和Writer作为基类 字节流和字符流字节流和字符流的用法几乎完全一样,区别在于字节流和字符流所操作的数据单元不一样:字节流操作的最小数据单元是8位的字节,而字符流操作的最小数据单元是16位的字符 节点流和处理流可以从向一个特定的IO设备(如磁盘.网络)读

再回首Java第二十四天

Callable和FutureJava1.5开始,Java提供了Callable接口,Callable接口提供了一个call()方法作为线程的执行体,但call()方法run()方法的功能更强大:?call()方法可以有返回值?call()方法可以声明抛出异常因此我们完全可以提供一个Callable对象作为Thread的target,而该线程的执行体就是该Callable对象的call方法.问题是:Callable对象时JDK1.5开始新增的接口,而它并不是Runnable的子接口,所以Call

再回首Java第十五天

类的加载 当程序主动使用某个类是,如果该类还没有被加载到内存中,系统就会通过加载.链接.初始化三个步骤对该类进行初始化,如果没有意外,JVM就会完成这三个步骤,所以有时也把这三个步骤称为类的加载和类的初始化. 类的加载是指将类的class文件读入内存,并为之创建一个java.lang.Class对象,也就是说当程序中使用任何类时,系统都会为之创建一个java.lang.Class对象 类的加载由类的加载器完成,类加载器通常由JVM提供,这些类加载器是程序运行的基础,JVM提供的加载器其称为系统加

再回首Java第十四天

Calendar的实例方法setLenient(boolean bool)用于设置其容错性 Calendar两种的模式:lenient模式和no-lenient模式,当Calendar处于lenient模式时,每个时间字段可以接受超出它允许范围的值.当处于no-lenient模式时,当某个时间字段设置的值超出了它允许的范围,程序将抛出异常. set方法延迟修改 set(f,value)方法将日历字段f更改为value,此外它还设置了一个内部成员变量,以指示日历字段已被修改.尽管日历字段f是立即修

再回首Java第十九天

类加载机制 JVM的类加载机制主要有一下三种加载机制 全盘负责:所谓全盘负责就是说当一个类加载器负责加载某个Class的时候,该Class所依赖和引用的其它的Class都由该类加载器负责加载,除非显式使用另一个类加载器来载入 父类委托:所谓父类委托则是先让父类加载器试图加载该Class,只有在父类加载器无法加载时才从自己的类路径中加载该类 缓存机制:缓存机制保证所有被加载的Class都会被缓存,当程序中使用某个Class时,类加载器先从缓存中寻找该Class,只有当缓存中不存在该Class时,系

JAVA基础再回首(二十五)——Lock锁的使用、死锁问题、多线程生产者和消费者、线程池、匿名内部类使用多线程、定时器、面试题

JAVA基础再回首(二十五)--Lock锁的使用.死锁问题.多线程生产者和消费者.线程池.匿名内部类使用多线程.定时器.面试题 版权声明:转载必须注明本文转自程序员杜鹏程的博客:http://blog.csdn.net/m366917 我们来继续学习多线程 Lock锁的使用 虽然我们可以理解同步代码块和同步方法的锁对象问题,但是我们并没有直接看到在哪里加上了锁,在哪里释放了锁,为了更清晰的表达如何加锁和释放锁,JDK5以后提供了一个新的锁对象Lock Lock void lock():获取锁 v

再回首Java第二十二天

类加载器的种类: 1.Bootstrap ClassLoader: 负责加载Java核心类,即$JAVA_HOME/jre/lib/rt.jar,由C++实现 2.Extension ClassLoader: 负责加载Java平台扩展功能的一些jar,包括$JAVA_HOME/jre/lib/*.jar和$JAVA_HOME/jre/lib/ext/*.jar 3.System(App) ClassLoader:负责加载classpath中指定的jar或.class 4.Custom Class

再回首Java第二十一天

DOM和SAX解析技术的实现 实现DOM和SAX即系技术的方法有多种,下面列出了常用的几种方法 JAXP(Java API for XML:JAXP是对应用程序隐藏了特定解析器的接口,它提供了访问DOM和SAX实现的抽象层机制 JDOM:JDOM是一种使用XML的独特Java工具包,用于快速开发XML应用程序,它基于树型结构,利用纯Java的技术对XML文旦实现解析.生成.序列化以及多种操作.JDOM直接为Java编程服务.它利用更为请有力的Java语言的诸多特性(方法重载.集合概念以及樱色),