Java中的Nested Classes和Inner Classes

Java有嵌套类(Nested Classes)和内部类(Inner Classes)的概念。

嵌套类(Nested Classes)分为两种:static and non-static。即静态的和非静态的,静态的嵌套类我们称之静态嵌套类(static nested classes),非静态的嵌套类我们称之为内部类(inner classes)。

静态的嵌套类我们能够这样表示:

OuterClass.StaticNestedClass

比方说我们创建一个静态嵌套类:

OuterClass.StaticNestedClass nestedObject = new OuterClass.StaticNestedClass();

静态嵌套内部类与别的类并没有什么语义上的差别,关于静态嵌套类存在的意义是,它能直接获得其外部类的静态成员变量,使用嵌套静态类的意义实际上并不大。

内部类的表演示样例如以下:

class OuterClass {
...
class InnerClass {
...
}
}

内部类对象是依附于其外部类的对象存在而存在的。也就是说。假设我们要创建内部类的对象,首先我们必须要创建外部类的对象。然后才干创建内部类的对象,内部类能够直接获取外部类的字段(fields )和方法(methods )。创建内部类的方式例如以下:

OuterClass.InnerClass innerObject = outerObject.new InnerClass();

内部类因为依赖外部类的对象。因此其不能定义静态变量(static final除外)。

所以,关于静态嵌套类和内部类的差别是:

  • 静态嵌套类不会持有外部类的应用,而内部类会持有外部类的引用。

  • 静态嵌套类的实例化不须要先实例化外部类。而内部类的实例化须要先实例化外部类。

  • 静态嵌套类并不能获取外部类的成员变量(仅仅能获取其静态成员变量)。而内部类即使其外部类的成员变量是私有的,仍然能够获取其变量(不管是否是静态的)。

Java中的Nested Classes和Inner Classes的更多相关文章

  1. Reloading Java Classes 101: Objects, Classes and ClassLoaders Translation

    The original link: http://zeroturnaround.com/rebellabs/reloading-objects-classes-classloaders/ A Bir ...

  2. 【错误解决】 java.lang.ClassNotFoundException: org.apache.jsp.WEB_002dINF.classes.views.index_jsp

    转载请注明出处:http://blog.csdn.net/qq_26525215 本文源自[大学之旅_谙忆的博客] 今天建立Spring MVC骨架的时候,突然遇到这么一个问题~~ HTTP Stat ...

  3. java中常见的几种异常

    算术异常类:ArithmeticExecption空指针异常类:NullPointerException类型强制转换异常:ClassCastException数组负下标异常:NegativeArray ...

  4. 关于java中的异常问题 1

    1.首先参考一下关于java异常处理方面的知识 查看博客http://lavasoft.blog.51cto.com/62575/18920/ 这里介绍的很好,下面从中学习到一些东西,摘抄如下: 1. ...

  5. java中的异常和处理

    算术异常类:ArithmeticExecption 空指针异常类:NullPointerException 类型强制转换异常:ClassCastException 数组负下标异常:NegativeAr ...

  6. 沉淀再出发:java中注解的本质和使用

    沉淀再出发:java中注解的本质和使用 一.前言 以前XML是各大框架的青睐者,它以松耦合的方式完成了框架中几乎所有的配置,但是随着项目越来越庞大,XML的内容也越来越复杂,维护成本变高.于是就有人提 ...

  7. Java中的synthetic

    有synthetic标记的field和method是class内部使用的,正常的源代码里不会出现synthetic field.小颖编译工具用的就是jad.所有反编译工具都不能保证完全正确地反编译cl ...

  8. java中一些常用的英语

     abstract (关键字  ) 抽象  ['.bstr.kt]  access vt.访问,存取  ['.kses]'(n.入口,使用权)  algorithm n.算法  ['.lg.rie ...

  9. Java中的常用异常处理方法

    觉得自己是一个Java专家吗?是否肯定自己已经全面掌握了Java的异常处理机制?在下面这段代码中,你能够迅速找出异常处理的六个问题吗? 1 OutputStreamWriter out = ... 2 ...

随机推荐

  1. C++ 线程同步的四种方式

    程之间通信的两个基本问题是互斥和同步. (1)线程同步是指线程之间所具有的一种制约关系,一个线程的执行依赖另一个线程的消息,当它没有得到另一个线程的消息时应等待,直到消息到达时才被唤醒. (2)线程互 ...

  2. java “==”和“equals”

    菜呀,只能记笔记了 ==:如果是基本数据类型,比较值,如果是引用类型,比较地址 equals:比较值

  3. 面试之Linux

    Linux的体系结构 体系结构主要分为用户态(用户上层活动)和内核态 内核:本质是一段管理计算机硬件设备的程序 系统调用:内核的访问接口,是一种不能再简化的操作 公用函数库:系统调用的组合拳 Shel ...

  4. Myeclipse快速排版的快捷键

    Myeclipse快速排版的快捷键 1.全选 ctrl+a 2.排版 ctrl+i

  5. Python学习-range的用法

    range() 函数的用法 range(start,end,step):可以参见已连串的数字,常与for循环配合使用 参数详解如下 start:开始创建的起始位置,默认为0 end:开始创建的结束位置 ...

  6. python 用 PIL 模块 画验证码

    PIL 简单绘画 def get_code_img(request): from PIL import Image, ImageDraw, ImageFont import random def ra ...

  7. Java 集合相关

    对整个体系做一个记录,并不涉及详细应用 Object类 1. 重写toString方法 System.out.println可以打印任何对象在于Object类拥有一个方法 public String ...

  8. xtu summer individual-4 A - Beautiful IP Addresses

    Beautiful IP Addresses Time Limit: 2000ms Memory Limit: 262144KB This problem will be judged on Code ...

  9. React & search & keyboard ghost

    React & search & keyboard ghost DOM events https://www.w3schools.com/jsref/dom_obj_event.asp ...

  10. 【最大流】Escape

    https://www.bnuoj.com/v3/contest_show.php?cid=9149#problem/F [题意] 给定n个人和m个星球,每个人可以匹配某些星球,每个星球有一定的容量限 ...