【JavaSE专栏65】内部类的使用,定义在其他类内部的类 您所在的位置:网站首页 java内部类访问外部类 【JavaSE专栏65】内部类的使用,定义在其他类内部的类

【JavaSE专栏65】内部类的使用,定义在其他类内部的类

2024-05-17 19:21| 来源: 网络整理| 查看: 265

在这里插入图片描述在这里插入图片描述一、什么是内部类

Java 中的内部类是定义在其他类内部的类。

内部类可以访问外部类的成员(包括私有成员),并且可以起到隐藏和封装的作用。

下面是一个简单的 Java 内部类的示例代码,请同学们复制到本地执行。

代码语言:javascript复制public class OuterClass { private int outerVariable = 10; public void outerMethod() { InnerClass innerObj = new InnerClass(); innerObj.innerMethod(); } public class InnerClass { private int innerVariable = 5; public void innerMethod() { System.out.println("Inner Variable: " + innerVariable); System.out.println("Outer Variable: " + outerVariable); } } public static void main(String[] args) { OuterClass outerObj = new OuterClass(); outerObj.outerMethod(); } }

在这个例子中,OuterClass 包含了一个内部类 InnerClass。

InnerClass 可以直接访问外部类 OuterClass 的成员变量 outerVariable,并且 OuterClass 可以通过创建 InnerClass 的实例来调用 innerMethod() 方法。

在 main() 方法中,我们创建了一个 OuterClass 对象并调用了 outerMethod() 方法,它又创建了一个 InnerClass 对象并调用了 innerMethod() 方法。在 innerMethod() 方法中,我们打印出了内部类的成员变量 innerVariable 和外部类的成员变量 outerVariable。

这个示例展示了内部类可以访问外部类的成员,以及如何创建和使用内部类的实例。

内部类分为以下

4

种类型,请同学们认真学习。

成员内部类:定义在类的内部,并且与外部类的成员级别相同。成员内部类可以访问外部类的所有成员,包括私有成员。创建成员内部类的实例时,必须先创建外部类的实例。静态内部类:使用 static 关键字修饰的内部类,它与外部类的实例无关,可以直接通过外部类进行访问。静态内部类不能访问外部类的非静态成员,只能访问外部类的静态成员。方法内部类:定义在方法内部的类,只能在该方法的作用域内使用。方法内部类可以访问外部类的成员(包括方法的参数和局部变量),但是只能访问 final 修饰的局部变量。匿名内部类:没有名字的内部类,用于创建只需要使用一次的类。匿名内部类通常是在创建接口对象或者继承父类的时候使用。

内部类的特点包括以下

4

点,请同学们认真学习。

内部类可以访问外部类的成员,包括私有成员。内部类可以隐藏在外部类中,对外部类的其他类不可见。内部类可以实现多重继承,一个类可以同时继承多个内部类。内部类可以访问外部类的实例,包括实例变量和实例方法。

内部类的使用场景包括以下

3

点,请同学们认真学习。

封装:将内部类设为私有,只供外部类使用。代码组织:将相关的类组织在一起,提高代码的可读性和可维护性。回调机制:内部类可以实现接口或继承抽象类,用于回调方法的实现。

总之,内部类是一种特殊的类,它可以访问外部类的成员,并且用于实现封装、代码组织和回调等功能。

在这里插入图片描述在这里插入图片描述二、内部类和普通类有什么区别

Java 中的内部类和普通类有以下

6

点区别,请同学们认真学习。

访问权限:内部类可以访问外部类的私有成员,而普通类不能直接访问外部类的私有成员。这是因为内部类是外部类的成员,可以享有外部类成员的所有访问权限。关联性:内部类与外部类之间存在一种关联性,内部类可以访问外部类的成员,包括实例变量和方法。而普通类之间没有这种特殊的关联性。创建方式:内部类的实例必须依赖于外部类的实例,需要先创建外部类的实例,然后再创建内部类的实例。而普通类可以直接通过new关键字创建实例。类型:内部类可以分为成员内部类、静态内部类、方法内部类和匿名内部类。而普通类只有一种类型。隐藏性:内部类可以被隐藏在外部类中,对外部类的其他类不可见。而普通类不具备这种隐藏性,对于外部类的其他类是可见的。使用场景:内部类通常用于封装、组织代码、实现回调机制等特殊的需求场景。普通类更适合用于一般的面向对象编程。

总之,内部类与普通类之间的区别主要体现在访问权限、关联性、创建方式、类型、隐藏性和使用场景等方面,同学们可以根据具体的需求,可以选择合适的类类型来实现功能。

在这里插入图片描述在这里插入图片描述三、内部类的应用场景

内部类在 Java 中有很多应用场景,以下是一些常见的

6

种应用场景。

实现回调机制:内部类可以实现接口或继承抽象类,用于回调方法的实现。通过内部类实现回调机制可以简化代码的编写,使代码更加清晰和可维护。封装和隐藏:内部类可以被私有修饰,将其隐藏在外部类中,只供外部类内部进行访问。这样可以实现封装性,防止外部类以外的其他类直接访问内部类。优化代码结构:内部类可以将相关的类组织在一起,提高代码的可读性和可维护性。通过将内部类定义在需要使用的地方,可以减少类的数量,简化代码结构。实现多重继承:内部类可以实现多重继承,一个类可以同时继承多个内部类。这样可以避免 Java 不支持多继承的限制,实现更灵活的类的关系。访问外部类私有成员:内部类可以访问外部类的私有成员,包括私有变量和私有方法。这样可以实现对外部类私有成员的访问和操作,增强了内部类的功能。匿名内部类:内部类可以用于创建只需要使用一次的类,即匿名内部类。通过匿名内部类,可以在创建接口对象或继承父类的时候,快速定义相关的实现逻辑,简化代码。在这里插入图片描述在这里插入图片描述四、内部类面试题Java 中的内部类有哪几种类型?分别描述它们之间的区别和使用场景。内部类可以访问外部类的私有成员吗?为什么?如何在外部类以外的地方创建内部类的实例?静态内部类和非静态内部类有什么区别?为什么匿名内部类可以访问外部类的局部变量,而不需要声明为 final?如何访问静态内部类和非静态内部类的成员变量和方法?内部类是否可以拥有自己的内部类?什么是内部类的作用域?如何在外部类中创建内部类的实例?内部类和继承关系有什么异同之处?五、总结

本文讲解了 Java 中内部类的概念及语法,并给出了样例代码,在下一篇博客中,将讲解 Java instanceof 关键字和数据类型转换的知识点。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有