当前位置:首页 > Java

java如何调用内部类

2026-02-04 22:11:52Java

调用静态内部类

静态内部类(static nested class)可以直接通过外部类名访问,无需依赖外部类实例。

OuterClass.StaticNestedClass nestedObject = new OuterClass.StaticNestedClass();

调用非静态内部类

非静态内部类(inner class)必须通过外部类的实例创建。

java如何调用内部类

OuterClass outerObject = new OuterClass();
OuterClass.InnerClass innerObject = outerObject.new InnerClass();

在外部类中调用内部类

外部类可直接通过内部类名实例化内部类对象。

public class OuterClass {
    private class InnerClass {
        void display() {
            System.out.println("Inner class method");
        }
    }

    void callInner() {
        InnerClass inner = new InnerClass();
        inner.display();
    }
}

在内部类中访问外部类成员

非静态内部类隐含持有外部类实例的引用,可通过OuterClass.this访问外部类成员。

java如何调用内部类

public class OuterClass {
    private String outerField = "Outer field";

    class InnerClass {
        void accessOuter() {
            System.out.println(OuterClass.this.outerField);
        }
    }
}

局部内部类的调用

局部内部类定义在方法或作用域内,仅能在该作用域中实例化。

public class OuterClass {
    void method() {
        class LocalInnerClass {
            void display() {
                System.out.println("Local inner class");
            }
        }
        LocalInnerClass local = new LocalInnerClass();
        local.display();
    }
}

匿名内部类的调用

匿名内部类通常用于实现接口或继承类,直接通过new关键字定义并实例化。

interface Greeting {
    void greet();
}

public class Main {
    public static void main(String[] args) {
        Greeting greeting = new Greeting() {
            @Override
            public void greet() {
                System.out.println("Hello from anonymous class");
            }
        };
        greeting.greet();
    }
}

注意事项

  • 静态内部类不能直接访问外部类的非静态成员。
  • 非静态内部类依赖外部类实例,因此不能定义静态成员(除非是常量)。
  • 局部内部类和匿名内部类的作用域仅限于定义它们的块内。

标签: 部类java
分享给朋友:

相关文章

java如何输入

java如何输入

使用Scanner类进行输入 Scanner类是Java中最常用的输入工具,适用于从控制台或文件读取数据。需要导入java.util.Scanner包。 基本语法: Scanner sca…

java如何输入数据

java如何输入数据

输入数据的方法 在Java中,输入数据可以通过多种方式实现,具体取决于输入来源(如控制台、文件、网络等)。以下是几种常见的方法: 使用Scanner类从控制台输入 Scanner类是Java中最常用…

java如何处理高并发

java如何处理高并发

Java处理高并发的方法 使用多线程和线程池 Java的java.util.concurrent包提供了线程池(如ThreadPoolExecutor)和并发工具类(如CountDownLatch、C…

java如何遍历map

java如何遍历map

遍历Map的几种方法 在Java中,遍历Map有多种方式,可以根据需求选择合适的方法。以下是常见的几种遍历方式: 使用entrySet遍历 通过entrySet()方法获取键值对的集合,可以同时访问…

如何选择java培训

如何选择java培训

评估培训机构资质 选择有正规资质的机构,查看其营业执照、办学许可证等。优先考虑具备人力资源和社会保障部或教育部认证的机构,这类机构的教学质量和课程设置通常更规范。 考察课程内容与行业需求匹配度…

如何查看java版本

如何查看java版本

查看Java版本的命令行方法 在终端或命令提示符中运行以下命令,可以快速查看已安装的Java版本: java -version 输出示例: java version "17.0.1" 20…