您的位置 首页 java

Java基础 内部类 简单了解一下

读者老爷们大家好,图图给大家请安啦~今天还是外甥打灯笼:照旧。让我们直接进去学习中吧。

学习内部类,我们首先要明白它的概念。也就是在某些情况下,我们把一个类放在另外一个类的内部定义,定义在其他类内部的类就称为内部类,包含内部类的类称为外部类(宿主类);内部类又分为成员内部类和静态内部类。提供了更好的封装,可以把内部类隐藏在外部类之中,不允许其他类访问。有效减少了无意义的源文件的数量这是内部类的优势所在。

那么它都有哪些特性呢?一:内部类编译完成后会产生.class文件,文件名称是”外部类名称$内部类名称.class”。二:内部类可以直接访问外部类的私有数据,因为内部类被当成其外部类成员。三:但是外部类不能直接访问内部类的实现细节,如内部类成员变量,需要内部类对象.属性( private 也可以)的方式。四:内部类的访问修饰符、继承、实现接口和普通类相同。

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

成员内部类又有哪些需要注意的事项呢?一:根据静态成员不能访问非静态成员的规则,外部类的 静态方法 ,静态代码块不能访问非静态内部类,需要通过实例访问:如:new Out().new In();二: Java 不允许在非静态内部类中定义静态成员,即不能包含静态方法,静态Field,静态代码块,但可以有静态常量 static final

如果一个内部类使用static声明,则此内部类就称为静态内部类。在宿主类之外,权限允许时可以通过宿主类名.内部类名来访问:/*Outer.*/Inner inner = new Outer.Inner();在宿主类内部,无论是静态方法还是非静态方法,都可以直接创建该内部类的对象Inner in = new /*Outer.*/Inner();。

静态内部类的特征是什么呢?静态内部类属于外部类的类成员,创建时不用创建外部类实例对象;静态内部类可以直接访问宿主类的 静态变量 ,如果要访问宿主类的成员变量,必须通过宿主类的实例对象访问;静态内部类可以包含静态变量、静态方法、static block,实例变量,实例方法,block;外部类可以通过类名直接访问静态内部类的类变量,通过实例访问实例变量,不管变量是否私有化。

局部内部类也叫区域内嵌类;局部内部类是定义在方法中的类,所以类的作用范围仅限于该方法,由类生成的对象也只能在该方法中使用。局部内部类不能使用private, protected ,public,static中的任何一个修饰符修饰,也不能包含静态成员;局部内部类可以直接访问其方法所在的类的属性。如果在类中使用其所在方法的 形参 ,则该形参必须声明为final。咱们看一张示例图:

编辑不易,希望各位读者老爷们多多支持,图图拜谢~

文章来源:智云一二三科技

文章标题:Java基础 内部类 简单了解一下

文章地址:https://www.zhihuclub.com/173283.shtml

关于作者: 智云科技

热门文章

网站地图