服务时间:8:30-18:00

首页 >java学习网

java中什么是内部类

发布时间:2023-09-17 22:40 字数:1483字 阅读:80

java中什么是内部类?在Java中,内部类(Inner Class)是定义在其他类内部的类。内部类具有与外部类不同的特殊关系,并可以访问外部类的成员变量和方法。

java中什么是内部类

Java中的内部类主要分为以下几种类型:
1. 成员内部类(Member Inner Class):定义在外部类内部,并且不被任何访问修饰符(如private、public等)修饰的内部类。成员内部类可以访问外部类的成员,包括私有成员。
public class Outer {
    private int outerField;
    public void outerMethod() {
        // 外部类方法
    }
    public class Inner {
        private int innerField;
        public void innerMethod() {
            // 内部类方法
            outerField = 10; // 可以访问外部类的成员变量
            outerMethod();   // 可以调用外部类的方法
        }
    }
}
2. 静态内部类(Static Inner Class):定义为static的内部类。静态内部类与外部类的实例无关,可以直接通过外部类进行访问,不需要创建外部类的实例。
public class Outer {
    private static int outerField;
    public static void outerMethod() {
        // 外部类静态方法
    }
    public static class Inner {
        private int innerField;
        public void innerMethod() {
            // 内部类方法
            outerField = 10;      // 可以访问外部类的静态成员变量
            outerMethod();        // 可以调用外部类的静态方法
        }
    }
}
3. 方法内部类(Method Local Inner Class):定义在方法内部的内部类。方法内部类只在方法内可见,且只能在方法内部被访问到。
public class Outer {
    public void outerMethod() {
        class Inner {
            public void innerMethod() {
                // 内部类方法
            }
        }
        Inner inner = new Inner();
        inner.innerMethod();
    }
}
4. 匿名内部类(Anonymous Inner Class):没有明确定义类名和构造方法的内部类,通常用于创建接口对象或抽象类对象。
public interface MyInterface {
    void doSomething();
}

public class Outer {
    public MyInterface createInstance() {
        return new MyInterface() {
            public void doSomething() {
                // 匿名内部类方法
            }
        };
    }
}

内部类的存在可以提供更好的封装性和代码组织结构,同时也可以方便地访问外部类的成员。需要注意的是,在使用内部类时,内部类的实例必须绑定到一个外部类的实例上。例如,通过外部类的实例创建内部类的实例:`Outer.Inner inner = outerInstance.new Inner();`。

内部类的访问权限遵循Java的访问修饰符规则,可以根据需要使用private、protected、public等修饰内部类的访问权限。