Java 之 -------------- 内部类 详解
来源:互联网 发布:奖励旅游 知乎 编辑:程序博客网 时间:2024/04/29 10:40
java中的内部类,分为 内部类,局部内部类,匿名内部类!
内部类: 顾名思义 定义在类的内部的类叫做 内部类!
局部内部类: 定义在局部函数中的 类,叫做 局部内部类!
匿名内部类: 没有名字的内部类! 玩 android 都知道,android 比较常见 匿名内部类!
内部类的优点:
1 内部类可以直接 访问 外部类的所有成员!
因为,当你调用外部类的时候,却生了 outer.this.成员变量或函数!
2 含有静态成员的内部类, 必须是静态的!
3 内部类一般用在设计中!
弊端:
1 内部类 不能直接创建, 需要在前面 添加 外部类!
2 外部类 访问 内部类
先创建内部类 对象, 在访问!
代码如下:
package stu.love.d;class Outer{int num = 6;//内部类class Inner{public void show(){System.out.println("Hello World!"+num);}}public void func(){Inner in = new Inner();in.show();}}public class Innerdemo {/** * @param args */public static void main(String[] args) {// TODO Auto-generated method stubOuter out = new Outer();out.func();//直接创建内部类对象//内部类的类型 外部类.内部类 Outer.Inner in = new Outer().new Inner();Outer.Inner in1 = out.new Inner();}}
内部类定义为 静态的时候:
代码如下: 静态 直接用类名调用!
class Person{class Heart{}}class Outer{private static int num = 6;static class Inner{public static void show()//静态方法,其所在的内部类必须是静态的{System.out.println("Hello World!"+num);}}public void func(){Inner in = new Inner();in.show();}}class Demo16{public static void main(String[] args) {//调用静态内部类中的非静态方法Outer.Inner in = new Outer.Inner();in.show();//调用静态内部类中的静态方法Outer.Inner.show();}}
局部内部类:
实际意义 不是很大哦!
因为,她定义在 函数中,生命周期比较短。
注意的是: 她 所调用的变量 奥,因为 出栈后 可能 就消失了!
代码:
局部内部类:如果访问其所在函数的局部变量,该局部变量必须是final的class Outer { int num = 3;Object obj;public void func(final int x){ final int y = 6; <span style="white-space:pre"></span>// 局部内部类:class Inner //extends Object{public void show(){System.out.println(y);}public String toString(){return "inner"+y;}} <span style="white-space:pre"></span>// 用的话 在 函数内使用!obj = new Inner();}
public void function(){obj.toString();}}class Demo18 {public static void main(String[] args) {Outer out = new Outer();out.func(4);out.function();}}
内存解析图:
0 0
- Java 之 -------------- 内部类 详解
- Java之详解内部类
- java初学笔记之<内部类详解>
- java之详解匿名内部类
- Java提高篇之详解内部类
- Java提高篇之详解内部类
- java内部类详解
- Java内部类详解
- 详解 java 内部类
- java内部类详解
- java内部类详解
- java 内部类详解
- 【java】内部类详解
- java内部类详解
- java 内部类详解
- java内部类详解
- java内部类详解
- Java内部类详解
- 奋斗粉色粉色粉色粉色粉色粉色分
- 泛娱乐娱乐
- (经典)SQL语句优化
- leetcode Valid Sudoku(*)
- uva 1103 - Ancient Messages(象!形!文!字! dfs遍历计数)
- Java 之 -------------- 内部类 详解
- qsort函数、sort函数 (精心整理篇)
- 2827. Cow Solitaire 简单dp
- 【安卓笔记】仿乐安全首页动态效果
- ....
- 数据结构之线性表的顺序存储结构
- 如果多个日日都给人的个股日的如果的
- 【强连通分量】 HDOJ 3639 Hawk-and-Chicken
- 今天开始做oj题