Java의 내부 클래스 및 정적 중첩 클래스

Zeeshan Afridi 2023년10월12일
  1. Java의 클래스
  2. Java의 클래스 구조
  3. Java의 중첩 클래스 유형
Java의 내부 클래스 및 정적 중첩 클래스

Java는 순수한 객체 지향 프로그래밍 언어입니다. 클래스 없이 프로그램을 만들 수 없습니다.

Java의 클래스

클래스는 클래스 개체가 액세스할 수 있는 메서드 및 속성 집합을 나타내는 청사진 또는 프로토타입입니다. 실제 사례를 통해 이해해 봅시다.

Studentstudent name, student roll no, cal_gpa(), cal_fee()와 같은 몇 가지 속성과 메서드가 있는 클래스입니다. 이는 대학의 모든 학생에게 공통적인 속성입니다.

우리는 클래스를 생성하고, 모든 필수 속성을 정의하고, 각 학생의 클래스 객체로 접근하기 쉽습니다.

코드 예:

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();
  }
}

출력:

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.

우리는 학생들의 청사진을 이름, 롤 번호, CGPA 및 수수료와 같은 기본 정보가 포함된 클래스로 정의했습니다. 이제 모든 학생에 대해 이러한 속성과 메서드를 모두 정의하는 대신 모든 학생에 대해 이러한 속성과 메서드를 호출할 수 있습니다.

보시다시피 JinkuZeeshan이라는 두 개의 개체를 만들고 이러한 개체에 대한 Student 클래스의 속성과 메서드를 호출했습니다.

Java의 클래스 구조

Java는 강력한 객체 지향 프로그래밍 언어입니다. 코드 한 줄에도 클래스와 main 메서드가 필요합니다.

클래스 구문:

AccessSpecifer classKeyword ClassName{
    //Class body
}

예시:

Public class Student {
  // Class body
}
  1. AccessSpecifer는 코드의 접근성에 따라 public, private 또는 protected가 될 수 있습니다.

  2. class 키워드는 클래스를 정의하는 데 필수입니다. 그렇지 않으면 클래스를 만들 수 없습니다.

  3. ClassName도 클래스를 생성하는 데 필수입니다. 모범 사례와 가이드에 따르면 이름은 의미가 있어야 코드를 더 쉽게 이해하고 읽을 수 있습니다.

  4. Class body는 클래스의 경계 또는 한계입니다. 클래스 본문 내에서 변수와 메서드를 정의할 수 있습니다.

    클래스 본문은 {로 시작하여 }로 끝납니다.

Java의 중첩 클래스 유형

중첩 클래스는 다른 클래스 내의 클래스를 참조합니다. 이 현상은 중첩 조건 및 루프와 유사합니다.

Java를 사용하면 중첩 클래스를 만들 수 있습니다. 한 곳에서 사용하는 클래스들을 논리적으로 그룹화할 수 있게 해주고, 캡슐화의 활용도를 높입니다.

중첩 클래스의 구문:

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

Java에는 두 가지 유형의 중첩 클래스가 있습니다. 다음은 다음과 같습니다.

  1. 정적 중첩 클래스
  2. 이너 클래스

Java의 정적 중첩 클래스

정적 중첩 클래스는 정적 키워드를 사용하여 외부 클래스의 정적 멤버로 정의됩니다. 다른 정적 멤버를 사용하여 외부 클래스를 인스턴스화하지 않고도 정적 중첩 클래스에 액세스할 수 있습니다.

다른 정적 멤버와 마찬가지로 정적 클래스는 외부 클래스의 메서드 및 인스턴스 변수에 액세스할 수 없습니다.

코드 예:

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();
  }
}

출력:

This is a static nested class.

Java의 내부 클래스

보안은 거의 모든 소프트웨어 또는 조직에서 항상 최우선 순위입니다. Java는 보안으로 잘 알려져 있으며 내부 클래스는 이러한 보안 표준을 달성하는 데 도움이 되는 구성 요소 중 하나입니다.

내부 클래스에 접근하기 위해서는 먼저 외부 클래스의 객체를 생성해야 하고, 그 객체를 이용하여 내부 클래스의 객체를 만들 수 있습니다.

일반 또는 단순 클래스와 달리 내부 클래스는 protectedprivate 지정된 속성 및 메서드에 액세스할 수 있는 권한이 있습니다. 또한 외부 객체가 내부 클래스에 액세스하는 것을 원하지 않는 경우 내부 클래스를 private로 선언할 수 있습니다.

코드 예:

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();
  }
}

출력:

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

관련 문장 - Java Class