Java is a general-purpose, multi-paradigm programming language that is concurrent, class-based, object-oriented and specifically designed to have as few implementation dependencies as possible.

The “static nested class in java” is a Java construct that allows for static members of a class to be defined within the class itself.

This article will teach you how to:

  • Give an example of a nested class.
  • Describe the Member Class.
  • Explanation of the Local Class
  • Describe the Anonymous Class

Classes that are nested

A nested class is one that is declared within another. Even though the members of the outer or surrounding class are designated private, it may have access to them. The following are some of the reasons why you may want to utilize nested classes:

Allows for sensible class grouping.

It is reasonable to embed the second class inside the first and keep them together if a class acts as a helper class for another class.

Encapsulation is improved.

Class A may be defined as a nested class of class B if it requires access to private members of class B. As a consequence, class A has access to all of Class B’s secret members while remaining concealed from the outside world.

Code that is easier to maintain

The code is closer to where it is utilized when tiny classes are nestled inside top-level classes. This makes the code simpler to maintain.

Types and Benefits

There are many benefits to using nested classes. The following are a few of them:

The following are the many kinds of nested classes:

  • Non-static nested classes or member classes
  • Local courses are available.
  • Classes with no names
  • Nested static classes

Classes of Members

A non-static inner class that is declared as a member of an outer or enclosing class is known as a member class. Because it is connected with instances, it cannot have static modifiers. It has access to all of the outer class’s fields and methods, but not the other way around. Because members of an inner class are defined inside the scope of the inner class, an outer class cannot access a member of an inner class, even if it is marked as public. Public, protected, private, abstract, final, or static member classes may be defined.

How to define member classes inside an outer class is shown in the diagram below.

Member Classes in Java

The syntax for accessing a member class is as follows.

… . …

How to define and access a member class is shown in the code below.

/Declaring Inner class instance as part of Inner instanceInner member variable of /outer class Inner instanceInner; public static Member main void (String args[]) theInner = new Member().new Inner(); theInner.disp(); / Declaring instance of Inner class Member.Inner theInner = new Member().new Inner(); theInner.disp(); instanceInner = new Inner(); / Instance creation of Inner class x = “Welcome to MemberClass Demo”; / displayInner void () / This is not permitted! /members System.out.println(y); /members System.out.println(y); /members System.out.println(y); /members System.out.println(y void disp() System.out.println(x); class Inner / local instance variable of Inner class int y=5;

Note that you may define an instance variable of an inner class as a member variable of an outer class. The instance variable, like the other members of the outer class, may be initialized in the constructor of the outer class.

Classes in your neighborhood

A function, constructor, or initializer may define a local class. In other words, a local class is defined within a code block and is only visible within that block. It isn’t allowed to have a static modifier. It may refer to local variables defined in the scope that specifies them. Local classes cannot utilize modifiers like public, protected, private, or static.

The following are the characteristics of local classes:

  • Local classes are linked to a contained class instance and have access to all of the containing class’s members, even private ones.
  • Any local variables, method parameters, or exception parameters that are in the scope of the local method definition may be accessed by local classes, as long as they are specified as final.

Local classes may be declared inside a method, as seen in the diagram below.

Local Classes in Java

The code below shows how to utilize a local class.

public Outer() / accessible from local class private int I = 100; public static void main; public class Outer /** Creates a new instance of Outer */ public Outer() /** Creates a new instance of Outer */ public Outer() /** Creates a new instance of Outer */ public Outer() /** Creates a new instance of Outer */ public Outer() /** Creates (String args[]) objOuter.innmethod(); System.out.println(objOuter.innmethod()); objOuter.innmethod(); class InnClass / local class void disp() / final variable k is accessible; int innmethod () / Not accessible from local class int j=5; / Accessible from local class final int k=10; class InnClass / local class void disp() / final variable k is accessible return I System.out.println(“k=”+k); System.out.println(“k=”+k); System.out.println(“k=”+k); System.out.println(“k=”+k

Output:

Classes with No Names

There is no name for an anonymous class. It’s a special kind of local class. Extends, implements clauses, and access modifiers like public, private, protected, and static are likewise not allowed. It can’t specify a constructor since it doesn’t have a name. A local class may be utilized if a constructor declaration is required. Any static fields, methods, or classes cannot be defined in an anonymous class.

Because an interface cannot be implemented without a name, anonymous interfaces are not feasible to implement.

The diagram below illustrates how to create anonymous classes.

Anonymous Classes in Java

The code below shows how to utilize an anonymous class.

public void disp() public static void main class Book (String args[]) objTitle.objBook.disp(); objTitle.objBook.disp(); objTitle.objBook.disp(); objTitle.objBook.disp(); objTitle.objBook. class Title / Definition of an anonymous class objBook objBook objBook objBook objBook () ; / ; denotes end of statement public void disp() System.out.println(“Java Programming Fundamentals”);

Output:

Basics of Java Programming

Nested Static Class

The outer class is connected with a static nested class. It can’t access instance variables or methods specified in the enclosing class directly, but it can access class methods and variables. To access the enclosing class’s instance variables and methods, an object must be instantiated.

The enclosing class name may be used to access a static nested class.

EnclosedClass. StaticNestedClass

Access specifiers for static nested classes include public, private, protected, package, final, and abstract. Internal aspects of a class or a class hierarchy are implemented using private and protected static nested classes. Public static nested classes are often used to group classes together or provide a set of classes access to private static variables and functions.

The declaration of static nested classes is shown in the diagram below.

Static Nested Classes in Java

The code below shows how to utilize a static nested class.

class Stat; package pack / not accessible to static nested class private int age = 50; private static final String name = “John”; private static String company = “Dunn”; / not accessible to static nested class private static final String name = “John”; private static String company = “Dunn”; Out is a public static class System.out.println(“Welcome to Martin Limited!! “); System.out.println(name+company); public class StaticNestedDemo; void welcome() public static void main StatInn void desc() System.out.println(“Martin Limited is a Global Learning Solutions company”); (String args[]) / Declaring constructor of public static nested class directly StatInn objStat = new StatInn(); objStat.desc(); / Constructing instance of static nested class Stat.Out n = new Stat.Out(); n.welcome();

Output:

Martin Limited would like to extend a warm welcome to you. JohnDunn Martin Limited is a provider of global learning solutions.

In Java, an anonymous inner class is a type of nested class that does not have a name. It can be used to create objects without explicitly naming them. It can also be used as a placeholder for the object’s implementation details. Reference: anonymous inner class in java.

Frequently Asked Questions

What is a nested class in Java?

A: A nested class is a class that inherits from another Java classes.

What are the two types of nested classes in Java?

A: There are two types of nested classes in Java. One is a local class, which refers to a class defined inside another one. The other type is an anonymous inner class, which has the name of the enclosing scope or its parameter passed as an argument and it can be used to pass data between different scopes within Java code that would otherwise not have access to each others variables

What are the four types of nested classes?

A: The four types of nested classes are: class, interface, struct and union. These terms will be explained in more detail later on in the article.

Related Tags

  • when to use static nested class in java
  • nested classes c
  • private inner class java
  • nested classes python
  • nested class c#