JAVA有特殊类格式的——内部类。 今天我们来谈谈内部类之一的成员内部类。
如何定义成员内部类
那么,如何定义成员内部的类?
既然称为成员内部类,那就说明它与成员变量有相似之处。 从代码的层次结构来看,他与成员变量处于同一级别。
举个例子吧。
在上面的代码中,在类OutClass中定义了成员变量name。 在OutClass中,定义了与OutClass成员变量处于相同级别的非静态InClass类。 类(如InClass )被称为成员类。
如何使用内部类
这样的定义在一个类内的内部类中是如何使用的呢?
这里从两个角度来使用这个用法。
第一,它用于外部类,如示例代码OutClass。 举个例子吧。
上图中的代码在OutClass类中定义了InClass的成员变量。 从编码的形式来说,这种内部类的使用方法与使用其他类没有太大区别。
第二种使用方法是在其他类中使用。 举个例子吧。
要在其他类中使用内部类,需要通过外部类的对象,如图中的代码所示。 因为这个内部类是外部类对象的成员。
但是,如果希望在其他类中以这种方式使用内部类,前提是内部类定义的访问权限可以从外部访问,然后尝试更改内部类的访问修饰符。
如上代码所示,如果将内部类的访问修饰符更改为private,则会报告错误,因为在其他类中使用时无法访问。 也就是说,成员内部类和成员变量一样,可以隐藏在本类内部,暴露一定的功能。
内部类访问外部类的成员变量、方法
我们知道,在一个类中访问本类的成员变量、方法可以通过this关键字访问。 内部类如何访问外部类呢? 如上例所示,外部类的成员变量名称和内部类的成员变量名称重复不也没什么问题吗? (在本例中,外部类和内部类都有名为name的成员变量。 别胡说,上代码。
在上图的代码中,要使内部类访问外部类的成员变量或方法,请选择“外部类名. this .变量或方法名称”(代码中的OutClass.this.test )、out class.this 另外,即使外部类的成员变量和方法是私有的,也可以访问。 另外,内部类和外部类的成员变量名重复也没有问题。 让我们执行验证。
成员内部类不能有静态变量、方法
由于成员内部类用作外部类对象的成员,因此成员内部类不能具有静态变量或方法。
如上图所示,静态更改上面示例代码内部类的变量将报告错误。 添加了静态方法,但报告错误。
静态内容到此为止了。 砖头已经扔了。 我想收集大家的玉。