极客干货
当前位置:首页 - 苹果 >

Java基础学习 内部类 逆水行舟不进则退

2019-12-01来源:当代中国网

哈喽~读者老爷们大家好,我是图图。都说学习如逆水行舟,不进则退。大家最近是进了还是退了呢?嘿嘿,自己最清楚!好,话不多说,让我们继续了解Java基础吧。

Java基础学习 内部类 逆水行舟不进则退

今天我们要说的是内部类。了解一个新名词首先就要了解它的定义:在某些情况下,我们把一个类放在另外一个类的内部定义,定义在其他类内部的类就称为内部类也叫嵌套类,包含内部类的类称为外部类也叫宿主类。内部类又分为成员内部类和静态内部类。它能提供更好的封装,从而把自己隐藏在外部类之中。不允许其他类访问,这样就很有效的减少了无意义的源文件的数量。

Java基础学习 内部类 逆水行舟不进则退

上面是定义和优点,接下来说一下内部类的特性。内部类编译完成后会产生.class文件,文件名称是”外部类名称$内部类名称.class”;因为内部类被当成其外部类成员,所以内部类可以直接访问外部类的私有数据,但是外部类却不能直接访问内部类的实现细节。

Java基础学习 内部类 逆水行舟不进则退

我们知道内部类分为成员内部类和静态内部类。我们先看一下成员内部类是什么?当非静态内部类的方法内访问某个变量时,优先在该方法中查找是否存在该变量,存在则使用,如果不存在,则到该方法所在的内部类中查找,存在则使用,如果不存在,则到该内部类所在的外部类中查找,存在则使用,不存在则编译错误。因此,如果三者存在同名变量,可以使用this、外部类类名.this来限定区分。

Java基础学习 内部类 逆水行舟不进则退

成员内部类还有这么两点注意事项,需要大家了解一下:Java不允许在非静态内部类中定义静态成员,也就是说不能包含静态方法,静态Field,静态代码块,但可以有静态常量static final ;根据静态成员不能访问非静态成员的规则,外部类的静态方法,静态代码块不能访问非静态内部类,需要通过实例访问。

Java基础学习 内部类 逆水行舟不进则退

然后是静态内部类。怎么定义呢?如果一个内部类使用static声明,那么此内部类就称为静态内部类。它又有哪些特性呢?静态内部类属于外部类的类成员,创建时不用创建外部类实例对象;静态内部类可以直接访问宿主类的静态变量,如果要访问宿主类的成员变量,必须通过宿主类的实例对象访问;静态内部类可以包含静态变量、静态方法、static block,实例变量,实例方法,block;外部类可以通过类名直接访问静态内部类的类变量,通过实例访问实例变量,不管变量是否私有化。

Java基础学习 内部类 逆水行舟不进则退

我们最后再拓张两个名词:局部内部类和匿名内部类。它们又究竟是怎么回事呢?这个我们留到明天再说。读者老爷们对上面的各种定义,特性及优点有一个粗略的了解就可以了。重要的是理解,理解了之后就好记好学了。

Java基础学习 内部类 逆水行舟不进则退

编辑不易,望各位老爷多多支持,老规矩,图图祝各位仙福永享,寿与天齐。哈哈~

转载文章地址:http://www.nexidea-inc.com/pingguo/30272.html
(本文来自极客干货整合文章:http://www.nexidea-inc.com)未经允许,不得转载!
标签:
Java
网站简介 联系我们 网站申明 网站地图

版权所有:www.nexidea-inc.com ©2017 极客干货

极客干货提供的所有内容均是网络转载或网友提供,本站仅提供内容展示服务,不承认任何法律责任。