参考:http://blog.csdn.net/aaronsi/article/details/187322 和 http://openhome.cc/Gossip/JavaGossip-V1/InnerClass.htm

內部類別(Inner class)或「巢狀類別」(Nested class)。

非"static"的內部類別可以分為三種:成員內部類別(Member inner class)、區域內部類別(Local inner class)與匿名內部類別(Anonymous inner class)。

member inner classes: 要创建它的实例,必须有一个指向上层的引用,它不能含有static方法,可以有final的方法。

local inner classes: 只能被声明成abstract/final的或默认class;只能访问final/static的本地变量。local and anonymous 内部类不能被声明为private、public、protected or static。

anonymous inner classes: 匿名类不能含有构造函数。

static inner classes只有最上层的类或static类可以有,并且它只能访问static变量。

例子如下:

public class ATest{
int nonstatic_a = 3;
static int static_b = 4;
final int final_c = 5;
public static void main(String[] args){ } public void test01(int i){
final int c=0;
int d = 1;
//③local inner classes只能被定义成abstract/final的;只能访问final/static的本地变量。
//Illegal modifier for the local class InnerClass_Local; only abstract or final is permitted
class InnerClass_Local{ final int l= 0; //Cannot refer to a non-final variable d inside an inner class defined in a different method
//③local inner classes只能被定义成abstract/final的;只能访问final/static的本地变量。
// int e = d;//Compile Error!
int e = static_b;
int f = final_c; //The field ll cannot be declared static;
//static fields/methods can only be declared in static or top level types
// static int ll=2; //Compile Error!
// static void f1(){//Compile Error!
// System.out.print(c);
// } } } void fun2(){ } static class InnerClass2{
static int ll=2;
int aa=3;
//①static inner classes只有最上层的类或static类可以有,并且它只能访问static变量。
// int bb = nonstatic_a; //Compile Error! static class InnerClass5{
}
} class InnerClass3{
//②member inner classes要创建它的实例,必须有一个指向上层的引用,它不能含有static方法。
//The member type InnerClass4 cannot be declared static;
//static types can only be declared in static or top level types
// static class InnerClass4{//Compile Error!
// }
final void inner_fun(){ }
} final class InnerClass4{
void final_fun(){
}
} }

最新文章

  1. Launching web on MyEclipse Tomcat 问题
  2. hdu Dylans loves tree [LCA] (树链剖分)
  3. Unity的旋转-四元数,欧拉角用法简介
  4. [外挂6]在指定位置下棋 SendMessage函数
  5. sencha grid templatecolumn模板列,actioncolumn和renderer实现单元格重绘
  6. C#中jQuery Ajax实例(二)
  7. uva 348
  8. hunnu 11313 无重复元素序列的最长公共子序列转化成最长递增子序列 求法及证明
  9. PowerShell常用的.Net 、COM对象(New-Object、Assembly)、加载程序集
  10. Oracle Enterprise Manager Cloud Control 12c R4 安装配置
  11. .NET基础笔记(C#)
  12. 零基础如何一步一步开始搭建高性能直播平台?现以GitChat·架构来进行说明
  13. vue常用属性
  14. webpack 2 系列
  15. hdu3555数位dp基础
  16. Spring事件通知机制
  17. 包建强的培训课程(4):App测试深入学习和研究
  18. 【XSY2190】Alice and Bob VI 树形DP 树剖
  19. api.js封装请求
  20. XMLHttpRequest对象(Ajax)的状态码(readystate) HTTP状态代码(status)

热门文章

  1. php实现变态跳台阶(记忆化递归)
  2. 判断客户端是iPad、安卓还是ios
  3. 计算机图形学(二)输出图元_3_画线算法_2_DDA算法
  4. [Node.js] Testing ES6 Promises in Node.js using Mocha and Chai
  5. mysql数据库 navicat premium mac 破解教程
  6. Java虚拟机解析篇之---内存模型
  7. ios开发清除SDWebImage图片缓存
  8. jquery简单使用(看教程:快全有实例)(固定样式:$().val()设置属性,$().click()设置方法)
  9. 编译Valgrind arm交叉编译
  10. php$get中文汉字参数乱码