更新时间:2022-08-29 10:58:30 来源:极悦 浏览1135次
Java内部类在另一个类(也称为外部类)中声明,并且可以访问外部类的私有成员。编译器生成一个作为外部类成员的类,并且正是这个生成的类可以访问创建它的范围内的私有变量或方法(例如,在另一个方法内)。
静态嵌套内部类与其他静态成员类似,因为它们无法访问外部类的实例变量。相反,非静态内部类可以访问外部类的实例变量,因此能够创建外部类的实例。
Java 中的内部类比传统类提供了许多好处。它们可用于访问外部类的私有成员,可用于创建外部类的实例,还可用于创建匿名内部类。
但是,在 Java 中使用内部类也有一些缺点。它们会使您的代码更难阅读和调试,并且会增加代码的整体复杂性。
内部类分为四种类型:静态、非静态、本地和匿名。
静态内部类
这些是最简单的内部类。静态内部类是在类内部声明并标记为静态的那些。需要注意的是,这些类只能使用外部类的实例来访问。您可以利用静态嵌套类将相关类组合在一起。
非静态内部类
顾名思义,非静态内部类与外部类的实例相关联。外部类的所有成员(变量和方法)都可以从这些类中访问。
本地内部类
本地内部类在方法中定义。它们可以访问封闭类的所有成员(变量和方法),但不能从定义它们的方法之外实例化它们。本地定义的内部类只能在其定义的方法内实例化。
方法本地内部类只能在定义它的方法内访问,并且不能被定义它的方法之外的任何其他代码引用。方法局部内部类可以从封闭范围访问局部变量(包括最终变量)。
匿名内部类
没有名称的内部类也称为匿名内部类。匿名内部类的声明和实例化同时发生。匿名内部类不能有显式构造函数,就像所有本地内部类一样。当您必须只使用一次本地内部类时,匿名内部类很有用。
以下是在 Java 中使用内部类时要记住的一些重要事项:
内部类可以声明为公共的、私有的或受保护的。
内部类可以扩展任何类并实现任何接口。
需要注意的是,如果一个内部类已经被标记为静态,它就不能访问外部类的非静态成员。它可以访问外部类的静态成员。
如果没有外部类的实例,就不能创建内部类或嵌套类的实例。
内部类可用于编写更模块化和可重用的代码。
以下代码示例说明了如何在 Java 中实现内部类:
公共类 MyOuterClass {
公共类 MyInnerClass {
公共无效显示(){
System.out.println("内部类");
}
}
公共静态无效主要(字符串[]参数){
MyOuterClass objOuterClass = new MyOuterClass();
MyOuterClass.MyInnerClass objInnerClass = objOuterClass.new MyInnerClass();
objInnerClass.display();
}
}
以下代码清单说明了如何在 Java 中实现静态内部类:
导入 java.util.*;
类 MyOuterClass {
私有静态无效方法A()
{
System.out.println("MyOuterClass 的内部方法A");
}
静态类 MyInnerClass {
公共静态无效方法B()
{
System.out.println("MyInnerClass 的内部方法B");
方法A();
}
}
}
公共类 InnerClassDemo {
公共静态无效主(字符串参数 [])
{
MyOuterClass.MyInnerClass obj = new MyOuterClass.MyInnerClass();
obj.methodB();
}
}
以上就是关于“Java内部类的介绍及作用”的介绍,大家如果想了解更多相关知识,可以关注一下极悦的Java基础教程,里面的课程内容细致全面,适合没有基础的小伙伴学习,希望对大家能够有所帮助。
0基础 0学费 15天面授
Java就业班有基础 直达就业
业余时间 高薪转行
Java在职加薪班工作1~3年,加薪神器
工作3~5年,晋升架构
提交申请后,顾问老师会电话与您沟通安排学习