Clase interna y clase anidada estática en Java

Zeeshan Afridi 12 octubre 2023
  1. Clase en Java
  2. Estructura de una clase en Java
  3. Tipos de clases anidadas en Java
Clase interna y clase anidada estática en Java

Java es un lenguaje de programación puro orientado a objetos. No puede crear programas sin una clase.

Clase en Java

Una clase es un modelo o prototipo que representa un conjunto de métodos y propiedades a los que puede acceder el objeto de la clase. Entendámoslo a través de un ejemplo de la vida real.

Student es una clase que tiene algunas propiedades y métodos como student name, student roll no, cal_gpa(), cal_fee(). Estas son algunas propiedades comunes para todos los estudiantes de un colegio o universidad.

Es fácil para nosotros crear una clase, definir todas las propiedades requeridas y acceder a ellas con el objeto de la clase para cada estudiante.

Ejemplo de código:

package articlecodesinjava;
class Student {
  String name;
  int rollNumber;

  void cal_gpa() {
    System.out.println("The method calculates CGPA.");
  }
  void cal_fee() {
    System.out.println("The method calculates the Semester fee.");
  }
}

public class ArticleCodesInJava {
  public static void main(String[] args) {
    // creating objects of Student class
    Student Jinku = new Student();
    Student Zeeshan = new Student();

    System.out.println("This is Jinku's details.");
    System.out.println(Jinku.name = "Jinku");
    System.out.println(Jinku.rollNumber = 1);
    Jinku.cal_fee();
    Jinku.cal_gpa();

    System.out.println("\n\nThis is Zeeshan's details.");
    System.out.println(Zeeshan.name = "Zeeshan Afridi");
    System.out.println(Zeeshan.rollNumber = 2);
    Jinku.cal_fee();
    Jinku.cal_gpa();
  }
}

Producción :

This is Jinku's details.
Jinku
1
The method calculates the Semester fee.
The method calculates CGPA.


This is Zeeshan's details.
Zeeshan Afridi
2
The method calculates the Semester fee.
The method calculates CGPA.

Hemos definido el modelo de los estudiantes como una clase con información básica sobre ellos, como nombre, número de registro, CGPA y tarifa. Ahora podemos llamar a estas propiedades y métodos para cada estudiante en lugar de definirlos todos para cada estudiante.

Como puede ver, hemos creado dos objetos, Jinku y Zeeshan, y hemos llamado las propiedades y métodos de la clase Student para estos objetos.

Estructura de una clase en Java

Java es un lenguaje de programación fuertemente orientado a objetos; incluso una sola línea de código requiere una clase y el método main.

Sintaxis de una clase:

AccessSpecifer classKeyword ClassName{
    //Class body
}

Ejemplo:

Public class Student {
  // Class body
}
  1. AccessSpecifer puede ser public, private, o protected según la accesibilidad del código.

  2. La palabra clave class es obligatoria para definir una clase; de lo contrario, no puede crear una clase.

  3. ClassName también es obligatorio para crear una clase. Las mejores prácticas y guías dicen que los nombres deben ser significativos, lo que hace que el código sea más fácil de entender y más legible.

  4. Class body son las fronteras o límites de la clase. Puede definir variables y métodos dentro del cuerpo de la clase.

    El cuerpo de la clase comienza con { y termina con }.

Tipos de clases anidadas en Java

Una clase anidada se refiere a una clase dentro de otra clase. El fenómeno es similar a las condiciones y bucles anidados.

Java le permite crear clases anidadas. Le permite agrupar las clases que se utilizan en un solo lugar de forma lógica y también aumenta el uso de la encapsulación.

Sintaxis de una clase anidada:

class OuterClass { // OuterClass
  Class InnerClass { // InnerClass }
  }

En Java, hay dos tipos de clases anidadas. Estos son los siguientes:

  1. Clases estáticas anidadas
  2. Clases internas

Clases estáticas anidadas en Java

Una clase anidada estática se define como un miembro estático de su clase externa con la palabra clave static. Se puede acceder a una clase anidada estática sin instanciar la clase externa usando otros miembros estáticos.

Al igual que otros miembros estáticos, una clase estática no tiene acceso a los métodos y variables de instancia de su clase externa.

Ejemplo de código:

public class OuterClass {
  static class NestedStaticClass { // Outer class
    public void my_method() { // Inner class
      System.out.println("This is a static nested class.");
    }
  }

  public static void main(String args[]) { // Main function
    // object of nested class
    NestedStaticClass ob = new NestedStaticClass();
    ob.my_method();
  }
}

Producción :

This is a static nested class.

Clases Internas en Java

La seguridad es siempre la principal prioridad de casi todos los programas u organizaciones. Java es bien conocido por su seguridad, y la clase interna es uno de los componentes que nos ayudan a lograr esos estándares de seguridad.

Para acceder a la clase interna, primero debe crear un objeto de la clase externa y luego, usando ese objeto, puede crear el objeto de la clase interna.

A diferencia de una clase regular o simple, una clase interna tiene la autoridad para acceder a las propiedades y métodos especificados protected y private. Además, puede declarar la clase interna como private si no desea que los objetos externos accedan a la clase interna.

Ejemplo de código:

public class OuterClass {
  class NestedStaticClass { // Outer class

    public void my_method() { // Inner class
      System.out.println("This is a nested inner class.");
    }
  }

  public static void main(String args[]) { // Main function
    // object of nested class

    OuterClass OuterObj = new OuterClass();
    OuterClass.NestedStaticClass obj = OuterObj.new NestedStaticClass();
    obj.my_method();
  }
}

Producción :

This is a nested inner class.
Zeeshan Afridi avatar Zeeshan Afridi avatar

Zeeshan is a detail oriented software engineer that helps companies and individuals make their lives and easier with software solutions.

LinkedIn

Artículo relacionado - Java Class