A (non-local) inner class may be declared as public, protected, private, static, final, or abstract.
In Java, an inner class that is a member of an outer class can have various modifiers. The modifiers that can be applied to an inner class include:
- Access Modifiers:
- public: The inner class can be accessed from outside the outer class.
- protected: The inner class can be accessed within the package and by subclasses.
- default (no modifier): If no modifier is specified, the inner class is accessible only within the package.
- private: The inner class is only accessible within the outer class.
- Static Modifier:
- static: If the inner class is static, it is associated with the outer class rather than with instances of the outer class. Static inner classes cannot access non-static members of the outer class directly.
- Abstract Modifier:
- abstract: Inner classes can be abstract if they do not provide a complete implementation and need to be subclassed.
- Final Modifier:
- final: An inner class marked as final cannot be subclassed.
- Strictfp Modifier:
- strictfp: Inner classes can be marked as strictfp to ensure strict floating-point precision.
Here’s an example of an inner class with modifiers:
public class OuterClass {
private int outerField;
public class InnerClass {
// Inner class members
// Example with modifiers
public static final int CONSTANT_VALUE = 10; // static and final
protected void innerMethod() {} // protected method
}
// Outer class members
}
In this example, InnerClass
is a non-static inner class with the public
access modifier. It also contains a static final field and a protected method. The choice of modifiers depends on the desired visibility and behavior of the inner class in relation to the outer class and other classes.