课程内容:
-
内部类
-
Java中如何完成数据共享
内部类
-
什么是内部类?
指定义在一个类型(类/接口)当中的类被称为内部类
-
为什么要使用内部类?
1.内部类是Java当中共享数据最简单的方式之一
2.它还能用来表达类和类的专属关系
*: 内部类也是类 编译之后同样会生成.class文件
其命名规则为: 外部类名字$内部类名字.class -
内部类分为哪几种?
成员内部类
静态内部类
局部内部类
匿名内部类 -
成员内部类
1.能够共享外部类哪些内容:
能够共享外部类的所有[静态+非静态]成员[属性+方法]
2.如何理解其与外部类的关系:
蛔虫和牛的关系
3.如何创建其对象:
Outer.Inner in = new Outer().new Inner(); -
静态内部类
1.能够共享外部类哪些内容:
只能共享外部类的静态成员[属性+方法]
2.如何理解其与外部类的关系:
寄居蟹和蛤蜊壳 == 房客和房东的关系
3.如何创建其对象:
Outer.Inner in = new Outer.Inner();
*: 使用静态内部类 能够共享到的是外部类的静态成员
静态成员不是内部类也能访问啊
所以你要明白 静态内部类存在的意义
并不是为了共享数据的 而是为了
描述类和类的专属关系 -
局部内部类
1.能够共享外部类哪些内容:
a:被定义在非静态方法中: 能够共享外部类所有成员
b:被定义在静态方法中: 只能共享外部类静态成员
另外 由于它一定出现在外部类的方法体当中
所以还能共享其所在的外部类方法中的
局部变量 只是JDK8.0之前 必须加final
8.0开始默认就是final
2.如何理解其与外部类的关系:
老师和学生的关系 <旋木>
3.如何创建其对象:
Inner in = new Inner();
*: 注意有位置限定:
定义完成之后 所在方法结束之前 -
匿名内部类
1.引言:
1> 如果生个孩子 就是为了拿去卖钱的 就不用给他起名字
2> 在某些场景下 我们自己的名字根本不重要 反而长辈的名字才重要
2.语法:
new 父类/接口(){
覆盖或者实现抽象方法;
};
2.能够共享外部类哪些内容:
它能够共享外部类的什么 取决于定义它的位置
可能等价于上述三种的某一种!!!
Java当中如何完成数据共享
1.使用静态变量标签:部类,内部,静态,day2,Inner,new,共享 From: https://www.cnblogs.com/zhaodenghui33/p/18183297
2.使用参数传递 [构造方法传参]
3.使用内部类