难度
初级
学习时间
30分钟
适合人群
零基础
开发语言
java
开发环境
- JDK v11
- IntelliJ IDEA v2018.3
提示
本教学属于系列教学,内容具有连贯性,本章使用到的内容之前教学中都有详细讲解。
1.局部内部类
在任何作用域中定义的类都称之为局部内部类。
演示:
局部内部类。
代码:
2.局部内部类定义成员
当然了,你还可以和普通类一样定义成员:
3.局部内部类定义 构造方法
你也可以定义构造方法:
4.创建局部内部类对象
最重要的是,你还可以创建局部内部类对象:
5.局部内部类调用成员
除了可以定义局部内部类、创建局部内部类对象以外,你还可以想普通类一样去调用你的成员。
结果:
6.局部内部类不能定义静态成员
局部内部类不是你想定义什么都可以的,静态成员不能定义。
演示:
请在main()方法中定义一个局部内部类Student。
在局部内部类Student类中定义静态成员。
在main()方法中通过类名调用其静态成员。
请观察程序运行结果。
代码:
Main类:
结果:
错误信息:
文字版:
这个错误是说内部类里面用static修饰的只能是常量,既然常量都用static修饰,那么这个常量就是静态常量。
结果:
由此可见, 内部类和局部内部类里面静态成员只能定义静态常量。
7.局部内部类对象作为方法返回值返回
既然局部内部类可以定义在方法体内部,那么可以不可以返回出来呢?我们来试试。
演示:
请在Main类中定义一个getStudent()方法,然后在getStudent()方法体中定义一个局部内部类Student。
getStudent()方法返回类型是Student类,返回值是创建Student类对象。
在main()方法中调用getStudent()方法。
请观察程序运行结果。
代码:
Main类:
结果:
错误信息:
文字版:
/Users/admin/Workspace/Java/Hello/src/main/Main.java
Error:(18, 20) java: 找不到符号
符号: 类 Student
位置: 类 main.Main
Error:(7, 9) java: 找不到符号
符号: 类 Student
位置: 类 main.Main
这里得说一下,局部内部类的 作用域 。
首先,我们来看局部内部类Student定义的位置:
它定义在getStudent()方法的内部,局部内部类的作用域就是这个getStudent()方法的方法体里面。
局部内部类只能在作用域里面可见。
什么意思?就是说,局部内部类定义在方法里面就只有方法里面才能访问,出方法以外就不能访问。
拿上面这个例子来说,就是Student类属于getStudent()方法,不属于Main类。
出了这个getStudent()方法,谁也不能访问。所以,方法不能将局部内部类作为返回值类型,更不能将局部内部类对象作为返回值。但是,继承和实现( implements )情况又不一样了,后面再讲。
总结
- 在任何作用域中定义的类都称之为局部内部类。
- 内部类和局部内部类里面静态成员只能定义静态常量。
- 局部内部类只能在作用域里面可见。
至此,Java中局部内部类详解相关内容讲解先告一段落,更多内容请持续关注。
答疑
如果大家有问题或想了解更多前沿技术,请在下方留言或评论,我会为大家解答。
上一章
下一章
“全栈2019”Java第九十五章:可以定义静态局部内部类吗?
学习小组
加入同步学习小组,共同交流与进步。
- 方式一:关注头条号Gorhaf,私信“Java学习小组”。
- 方式二:关注公众号Gorhaf,回复“Java学习小组”。
全栈工程师学习计划
关注我们,加入“全栈工程师学习计划”。
版权声明
原创不易,未经允许不得转载!