Java中的成员内部类(实例内部类):相当于类中的一个成员变量,下面通过一个例子来观察成员内部类的特点

public class Outer {
//定义一个实例变量和一个静态变量
private int a;
private static int b;
//定义一个静态方法和一个非静态方法
public static void say(){}
public void test(){
//在外部类中调用内部类的属性和方法
Inner inner = this.new Inner();
inner.d = 1; //通过创建内部类实例来调用内部类属性
inner.walk(); //通过创建内部类实例来调用内部类方法
}
//成员内部类
public class Inner{
//定义一个静态常量
static final int m = 1;
//在内部类中定义一个静态变量和一个实例变量
//static int c; 编译出错
int d;
//定义一个匿名代码块和一个静态代码块
{}
//static{} 编译出错
//定义一个静态方法和一个普通方法
//public static void go(){} 编译出错
public void walk(){
//在内部类中调用外部类的属性和方法
a = 1;
b = 1;
say();
test(); //内部类可以直接访问外部类的所有属性和方法
}
}
}

总结:1、成员内部类可以由public protected default private修饰

   2、成员内部类是依赖于外部类的对象而存在的,在创建成员内部类的实例时,外部类的实例必须已经存在。

   3、成员内部类可以包含哪些内容

   1)匿名代码块

   2)非静态属性

   3)非静态方法

注意:成员内部类中不能有静态属性和方法但可以有静态常量(即用static final修饰的属性),因为在类加载时会初始化static修饰的内容,而成员内部类必须依赖于内部类对象,即成员内部类要在外部类加载之后加载,所以不能包含静态的变量和方法。使用final修饰的静态变量类加载时会自动初始化其值,将其作为一个常量,所以可以出现在内部类中。

   4、外部类访问内部类

   外部类可以通过创建成员内部类实例来访问成员内部类中的属性和方法

   5、成员内部类访问外部类

   成员内部类可以直接访问外部类的所有属性和方法

注意: 如果成员内部类B与外部类A包含同名的成员,那么在类B中, this.v表示类B的成员, A.this.v表示类A的成员。

   6、创建内部类实例的方法

   1)在外部类中创建:内部类名 name = this.new 内部类名();

   2)在非外部类中创建:外部类名.内部类名 name = new 外部类名().new 内部类名();

最新文章

  1. Vmware虚拟机配置LVS/NAT模式遇到的坑。
  2. android创建桌面快捷方式(启动目标非项目的启动页)
  3. Android中XML格式数据的简单使用
  4. Ural1057 - Amount of Degrees(数位DP)
  5. 用Delphi制作仿每行带按钮的列表
  6. Win7主题被禁用
  7. Android 蓝牙( Bluetooth)耳机连接分析及实现
  8. hdu4709求三角形面积
  9. Composer创建和发送HTTP Request
  10. Mybatis框架 基础
  11. pythhon_如何读写json数据
  12. BZOJ 1444: [Jsoi2009]有趣的游戏 [AC自动机 高斯消元]
  13. python selenium-webdriver 元素操作之键盘操作
  14. C#工具:Bootstrap WPF Style,Bootstrap风格的WPF样式
  15. 34. Find First and Last Position of Element in Sorted Array
  16. python day06笔记总结
  17. Fiddler 学习笔记---命令、断点
  18. ACM-ICPC 2018 徐州赛区网络预赛 A Hard to prepare
  19. 两台Mysql数据库数据同步实现
  20. gbk文件转为utf8文件

热门文章

  1. django框架 input 文本框 单选框 多选框 上传文件 等数据传输后台的程序 request.getlist接收多个结果 obj.chunks 用于文件传输 enctype="multipart/form-data文件传输必备表头
  2. _kbhit() for linux
  3. JavaWeb--过滤器Filter (一)
  4. protobuf's custom-options
  5. Mac 安装Django
  6. CMD一般命令
  7. yarn 完美替代 npm
  8. [原创]解读2017 OWASP Top10漏洞体系(含接口安全)
  9. idea注释字体倾斜的解决办法
  10. [operator]ubuntu + git