当前位置: 首页 > news >正文

网站建设前期预算/wordpress企业网站模板

网站建设前期预算,wordpress企业网站模板,龙之向导外贸网址,719y你会回来感谢我的Java中实现内部类内部类相信大家都用过很多次了,就不说它是怎么用的了。内部类1.成员内部类需要注意的是, 当成员内部类拥有和外部类同名的成员变量或这方法时, 默认情况下访问的是内部类的成员, 如要访问外部类的同名成员&#x…

Java中实现内部类

6132ecc444cccd537b5fb6932e57242d.png

内部类相信大家都用过很多次了,就不说它是怎么用的了。

内部类

1.成员内部类

c419e586de3ad4cd83f47d554d439194.png

需要注意的是, 当成员内部类拥有和外部类同名的成员变量或这方法时, 默认情况下访问的是内部类的成员, 如要访问外部类的同名成员, 需要使用以下形式:

外部类.this.成员变量

外部类.this.成员方法

内部类是依附外部类而存在的, 也就是说要创建成员内部类的对象,前提是创建一个外部类的对象,创建成员内部类的方式如下:

new Main().new Inner();

成员内部类可以拥有private访问权限、protected访问权限、public访问权限、默认访问权限。如用private修饰,则只能在外部类的内部访问。

2.局部内部类

局部内部类是定义在一个方法或作用域中的类,它的访问权限仅限于方法内或作用域内。

f6c824cd89b115e0d96bf1dcee4f0804.png

局部内部类也可以返回,像这样:

76757fc5499335a6126c859b6faedc51.png

3.匿名内部类

匿名内部类应该是我们平常使用最多的了,如下面创建线程:

4521d11a81337bc8990f039ff4024b37.png

匿名内部类在编译的时候有系统自动起名:Main$1

匿名内部类是没有构造器的类,大部分用于继承其他类或实现接口,并不需要增加额外的方法,只是对继承方法的实现或是重写

4.静态内部类

静态内部类也是定义在另一个类里面的类,只不过在类前加上了static。静态内部类是不需要依赖于外部类的,与静态成员变量类似。

f134a376393530951c1b64a37ea212bf.png

外部创建该静态类时可以如下创建:

Main.Inner mi = new Main Inner();

内部类实现原理

内部类为什么能够访问外部类的成员?

定义内部类如下:

ef70b68666768f8a4c91d97f833b4d0a.png

使用javap命令进行反编译。

编译后得到Main.class Main$Inner.class两个文件,反编译Main$Inner.class文件如下:

0b53cdf72372a484cdc4e5933ce62201.png

可以看到,内部类其实拥有外部类的一个引用,在构造函数中将外部类的引用传递进来。

匿名内部类为什么只能访问局部的final变量?

其实可以这样想,当方法执行完毕后,局部变量的生命周期就结束了,而局部内部类对象的生命周期可能还没有结束,那么在局部内部类中访问局部变量就不可能了,所以将局部变量改为final,改变其生命周期。

编写代码如下:

8225ca932883a06c98023f49ed337ab4.png

这段代码编译为Main.class Main$1.class两个文件,反编译Main$1.class文件如下:

bdce4b32d255dd5add7a4134bc5eea05.png

可以看到,java将编译时已经确定的值直接复制,进行替换,将无法确定的值放到了内部类的常量池中,并在构造函数中将其从常量池取出到字段中。

可以看出,java将局部变量m直接进行复制,所以其并不是原来的值,若在内部类中将m更改,局部变量的m值不会变,就会出现数据不一致,所以java就将其限制为final,使其不能进行更改,这样数据不一致的问题就解决了。

匿名内部类为什么访问外部类成员字段不用final?

上面说了,final关键字是为了解决数据不一致的问题,因为内部类中存有外部类的引用,所有对外部类中字段的修改都会真实的反映到外部类实例本身,所以不需要用final来修饰。

http://www.jmfq.cn/news/5147821.html

相关文章:

  • 做网站下载功能/技术培训学校机构
  • 网站开发的技术可行性/女装标题优化关键词
  • 网站热力图用ps怎么做/好的推广平台
  • 网站死链接怎么提交/关键词app
  • 自建外贸网站做B2B/seo专业术语
  • 阿里云服务器怎么部署网站/高端网站建设报价
  • 网站建设存在困难/网站seo置顶
  • 深喉咙企业网站帮助/百度seo如何做
  • 深圳企业高端网站建设/石家庄seo优化
  • 曲阳网站制作公司/深圳哪里有网络推广渠避
  • 网站建设我们的优势/五合一网站建设
  • 网站建设与设计试题/seo推广任务小结
  • 闸北网站建设/百度开发平台
  • 烟台市委网站官网/销售新手怎么找客源
  • 如何根据网址攻击网站/站长之家产品介绍
  • 潍坊网站建设案例/网络营销公司注册找哪家
  • 做美瞳网站需要什么资质/百度一下你就知道官网
  • 提供免费主页空间的网站/中国十大网络营销平台
  • b2c网站比较/守游网络推广平台登陆
  • 怎么用文件做网站/管理培训机构
  • 网站怎么做关键词搜索排面/软文代写
  • 北京鑫创网站建设/百度云搜索引擎入口
  • 新类型的网站/seo分析工具
  • 网站上的菠菜游戏哪里可以做/铜川网络推广
  • 网站中flash怎么做/郑州百度推广代运营
  • 网站架构需求/网站seo具体怎么做?
  • 中药材天地网做中药零售网站/推广的十种方式
  • 做外卖骑手用哪个网站/网站建设的整体流程有哪些
  • 常州天宁区做网站公司/最新疫情爆发
  • 可以做免费广告的网站有哪些/网站链接提交收录