java中什么是内部类?在Java中,内部类(Inner Class)是定义在其他类内部的类。内部类具有与外部类不同的特殊关系,并可以访问外部类的成员变量和方法。
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等修饰内部类的访问权限。