【Java 基础】11 内部类

有时候,我们定义一个类的时候,它是需要依附于其他类而存在的,这种就是内部类。

内部类有访问外部类的成员和方法的权限,可以访问外部类的私有成员。

内部类的主要作用是封装和组织代码,有助于实现更清晰、更模块化的程序结构。

Java 中有四种类型的内部类:成员内部类、局部内部类、匿名内部类和静态内部类。

1)成员内部类:

成员内部类是定义在类内部的类。它可以访问外部类的成员,包括私有成员。

public class OuterClass {
    private int outerVar;
    // 成员内部类
    public class InnerClass {
        public void display() {
            System.out.println("Outer variable: " + outerVar);
        }
    }
}

在上述例子中,InnerClassOuterClass 的成员内部类,可以访问 OuterClass 的私有变量 outerVar

2)局部内部类:

局部内部类是定义在方法或作用域内的类。它只能在定义它的方法或作用域内使用。

public class OuterClass {
    public void outerMethod() {
        int localVar = 10;

        // 局部内部类
        class LocalInnerClass {
            public void display() {
                System.out.println("Local variable: " + localVar);
            }
        }

        LocalInnerClass localInner = new LocalInnerClass();
        localInner.display();
    }
}

在上述例子中,LocalInnerClassouterMethod 方法的局部内部类,只能在该方法内使用。

3)匿名内部类:

匿名内部类是没有名字的局部内部类,通常用于创建一个只需要使用一次的类。

public interface Greeting {
    void greet();
}

public class OuterClass {
    public void displayGreeting() {
        // 匿名内部类实现接口
        Greeting greeting = new Greeting() {
            @Override
            public void greet() {
                System.out.println("Hello from anonymous class!");
            }
        };

        greeting.greet();
    }
}

在上述例子中,通过匿名内部类实现了 Greeting 接口。

4)静态内部类:

静态内部类是定义在类内部但被声明为静态的类。它不依赖于外部类的实例,可以直接通过外部类名访问。

public class OuterClass {
    private static int outerVar;

    // 静态内部类
    public static class StaticInnerClass {
        public void display() {
            System.out.println("Outer variable: " + outerVar);
        }
    }
}

在上述例子中,StaticInnerClassOuterClass 的静态内部类,可以通过 OuterClass.StaticInnerClass 直接访问。

内部类在一些场景下可以提供更好的封装和代码组织方式,但并不是在所有情况下都需要使用。

选择使用内部类的主要原因是它们具有更强的封装性,可以访问外部类的私有成员,同时有助于组织和管理相关的代码。

你可能感兴趣的:(Java,java,开发语言)