Java의 내부 클래스 및 정적 중첩 클래스
Java는 순수한 객체 지향 프로그래밍 언어입니다. 클래스 없이 프로그램을 만들 수 없습니다.
Java의 클래스
클래스는 클래스 개체가 액세스할 수 있는 메서드 및 속성 집합을 나타내는 청사진 또는 프로토타입입니다. 실제 사례를 통해 이해해 봅시다.
Student
는 student 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 및 수수료와 같은 기본 정보가 포함된 클래스로 정의했습니다. 이제 모든 학생에 대해 이러한 속성과 메서드를 모두 정의하는 대신 모든 학생에 대해 이러한 속성과 메서드를 호출할 수 있습니다.
보시다시피 Jinku
와 Zeeshan
이라는 두 개의 개체를 만들고 이러한 개체에 대한 Student
클래스의 속성과 메서드를 호출했습니다.
Java의 클래스 구조
Java는 강력한 객체 지향 프로그래밍 언어입니다. 코드 한 줄에도 클래스와 main
메서드가 필요합니다.
클래스 구문:
AccessSpecifer classKeyword ClassName{
//Class body
}
예시:
Public class Student {
// Class body
}
-
AccessSpecifer
는 코드의 접근성에 따라public
,private
또는protected
가 될 수 있습니다. -
class
키워드는 클래스를 정의하는 데 필수입니다. 그렇지 않으면 클래스를 만들 수 없습니다. -
ClassName
도 클래스를 생성하는 데 필수입니다. 모범 사례와 가이드에 따르면 이름은 의미가 있어야 코드를 더 쉽게 이해하고 읽을 수 있습니다. -
Class body
는 클래스의 경계 또는 한계입니다. 클래스 본문 내에서 변수와 메서드를 정의할 수 있습니다.클래스 본문은
{
로 시작하여}
로 끝납니다.
Java의 중첩 클래스 유형
중첩 클래스는 다른 클래스 내의 클래스를 참조합니다. 이 현상은 중첩 조건 및 루프와 유사합니다.
Java를 사용하면 중첩 클래스를 만들 수 있습니다. 한 곳에서 사용하는 클래스들을 논리적으로 그룹화할 수 있게 해주고, 캡슐화의 활용도를 높입니다.
중첩 클래스의 구문:
class OuterClass { // OuterClass
Class InnerClass { // InnerClass }
}
Java에는 두 가지 유형의 중첩 클래스가 있습니다. 다음은 다음과 같습니다.
- 정적 중첩 클래스
- 이너 클래스
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는 보안으로 잘 알려져 있으며 내부 클래스는 이러한 보안 표준을 달성하는 데 도움이 되는 구성 요소 중 하나입니다.
내부 클래스에 접근하기 위해서는 먼저 외부 클래스의 객체를 생성해야 하고, 그 객체를 이용하여 내부 클래스의 객체를 만들 수 있습니다.
일반 또는 단순 클래스와 달리 내부 클래스는 protected
및 private
지정된 속성 및 메서드에 액세스할 수 있는 권한이 있습니다. 또한 외부 객체가 내부 클래스에 액세스하는 것을 원하지 않는 경우 내부 클래스를 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 is a detail oriented software engineer that helps companies and individuals make their lives and easier with software solutions.
LinkedIn