详解Java 中的嵌套类与内部类

在Java中,可以在一个类内部定义另一个类,这种类称为嵌套类(nested class)。嵌套类有两种类型:静态嵌套类和非静态嵌套类。静态嵌套类较少使用,非静态嵌套类使用较多,也就是常说的内部类。其中内部类又分为三种类型:
1、在外部类中直接定义的内部类。
2、在函数中定义的内部类。
3、匿名内部类。
对于这几种类型的访问规则,
示例程序如下:
package lxg;
//定义外部类
public class OuterClass {
//外部类静态成员变量
private static String outer_static_string = "outer_static_string";
//外部类非静态成员变量
private String outer_string = "outer_string";
//定义静态嵌套类
private static class inner_static_class {
//静态嵌套类的静态成员变量
private static String inner_static_string = "inner_static_string";
//静态嵌套类的非静态成员变量
private String inner_string = "inner_string";
public void display( ) {
System.out.println( outer_static_string ); //静态嵌套类可以直接访问外部类的静态成员变量
// System.out.println(outer_string); //静态嵌套类不能直接访问外部类的非静态成员变量
System.out.println( inner_static_string ); //可以访问自己的静态成员变量
System.out.println( inner_string ); //可以访问自己的非静态成员变量
}
}
public void printInnerStatic( ) {
inner_static_class innStatic_class = new inner_static_class( );
innStatic_class.display( );
// System.out.println( inner_static_string ); //外部类不能直接访问静态嵌套类的成员变量
// System.out.println( inner_string ); //外部类不能直接访问静态嵌套类的成员变量
System.out.println( innStatic_class.inner_static_string ); //外部类可以通过类对象来访问静态嵌套类的成员变量
System.out.println( innStatic_class.inner_string ); //外部类可以通过嵌套类的类对象来直接访问静态嵌套类的私有成员变量
}
//外部类直接定义内部类
private class inner_class {
private String inner_string = "inner_string";
public void display(){
System.out.println(outer_static_string); //内部类可以直接访问外部类的静态成员变量
System.out.println(outer_string); //内部类可以直接访问外部类的静态成员变量
}
}
public void printInner(){
inner_class innClass = new inner_class( );
System.out.println(innClass.inner_string); //外部类可以通过内部类的类对象来直接访问内部类类的私有成员变量
}
public void inner_function(){
//函数中定义内部类
class inner_function_class {
private String inner_function_string = "inner_function_string";
public void printInnerFunction(){
System.out.println(outer_static_string); //内部类可以直接访问外部类的静态成员变量
System.out.println(outer_string); //内部类可以直接访问外部类的静态成员变量
System.out.println(inner_function_string); //可以直接访问自己的成员变量
}
}
inner_function_class inner = new inner_function_class( );
System.out.println(inner.inner_function_string);//外部类可以通过内部类的类对象来直接访问内部类的私有成员变量
}
public void printinnerfunction(){
// inner_function_class inner = new inner_function_class( ); //函数中定义的内部类,只在所属的函数内可见
}
}
通过示例程序可以看出:
1、对于静态嵌套类,其访问规则与静态成员变量相似,即静态方法不能直接访问非静态成员
2、对于内部类,可以直接访问外部类的成员变量
3、对于外部类,可以通过内部类的对象来访问内部类的私有成员变量,这一点与通常认为的访问规则差别较大
4、匿名内部类与在函数中定义的内部类相似,只在该函数内部可见。
如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
# Java
# 嵌套类与内部类
# 内部类的实现方法
# 嵌套类与内部类的分析
# java开发中嵌套类的详解及实例
# 深入理解Java嵌套类和内部类
# java 嵌套类的详解及实例代码
# Java嵌套类和内部类详解
# Java开发岗位面试被问到嵌套类怎么办
# 可以直接
# 可以通过
# 自己的
# 只在
# 如有
# 来访问
# 希望能
# 三种
# 较多
# 可以看出
# 有两种
# 谢谢大家
# 较少
# 常说
# 类中
# 疑问请
# 几种类型
# lxg
# package
相关文章:
网站制作和推广的区别,想自己建立一个网站做推广,有什么快捷方法马上做好一个网站?
如何通过.red域名打造高辨识度品牌网站?
C++时间戳转换成日期时间的步骤和示例代码
北京网站制作公司哪家好一点,北京租房网站有哪些?
大连网站制作费用,大连新青年网站,五年四班里的视频怎样下载啊?
电视网站制作tvbox接口,云海电视怎样自定义添加电视源?
广州顶尖建站服务:企业官网建设与SEO优化一体化方案
建站主机与服务器功能差异如何区分?
常州自助建站工具推荐:低成本搭建与模板选择技巧
济南专业网站制作公司,济南信息工程学校怎么样?
常州企业网站制作公司,全国继续教育网怎么登录?
PHP正则匹配日期和时间(时间戳转换)的实例代码
营销式网站制作方案,销售哪个网站招聘效果最好?
如何在阿里云通过域名搭建网站?
商务网站制作工程师,从哪几个方面把握电子商务网站主页和页面的特色设计?
大连 网站制作,大连天途有线官网?
Dapper的Execute方法的返回值是什么意思 Dapper Execute返回值详解
网站海报制作教学视频教程,有什么免费的高清可商用图片网站,用于海报设计?
建站之星代理如何优化在线客服效率?
如何做网站制作流程,*游戏网站怎么搭建?
如何在橙子建站中快速调整背景颜色?
建站之星如何防范黑客攻击与数据泄露?
如何通过西部建站助手安装IIS服务器?
常州企业建站如何选择最佳模板?
企业微网站怎么做,公司网站和公众号有什么区别?
XML的“混合内容”是什么 怎么用DTD或XSD定义
如何在搬瓦工VPS快速搭建网站?
建站主机如何选?性能与价格怎样平衡?
小程序网站制作需要准备什么资料,如何制作小程序?
如何规划企业建站流程的关键步骤?
如何选择美橙互联多站合一建站方案?
C#怎么创建控制台应用 C# Console App项目创建方法
建站之星后台密码如何安全设置与找回?
网站制作费用多少钱,一个网站的运营,需要哪些费用?
如何高效搭建专业期货交易平台网站?
如何用免费手机建站系统零基础打造专业网站?
如何制作一个表白网站视频,关于勇敢表白的小标题?
建站VPS推荐:2025年高性能服务器配置指南
太平洋网站制作公司,网络用语太平洋是什么意思?
武清网站制作公司,天津武清个人营业执照注销查询系统网站?
深圳网站制作的公司有哪些,dido官方网站?
阿里云高弹*务器配置方案|支持分布式架构与多节点部署
猪八戒网站制作视频,开发一个猪八戒网站,大约需要多少?或者自己请程序员,需要什么程序员,多少程序员能完成?
网站制作难吗安全吗,做一个网站需要多久时间?
定制建站方案优化指南:企业官网开发与建站费用解析
建站之星如何助力网站排名飙升?揭秘高效技巧
如何自定义建站之星网站的导航菜单样式?
用v-html解决Vue.js渲染中html标签不被解析的问题
武汉网站设计制作公司,武汉有哪些比较大的同城网站或论坛,就是里面都是武汉人的?
安徽网站建设与外贸建站服务专业定制方案
*请认真填写需求信息,我们会在24小时内与您取得联系。