2025년 7월 10일 목요일(32일차)

Jeonghoon·2025년 7월 10일

jeonghoon's Study

목록 보기
34/128

🧠 Java 복습 정리 (생성자 · 접근제한자 · static · final)


🚀 [ 생성자 (Constructor) ]

항목설명
📘 정의객체(인스턴스)를 생성할 때 사용되는 초기화 메소드
🧩 선언 규칙클래스명과 동일한 이름 사용, 반환값 없음
🔄 오버로딩매개변수의 개수·타입·순서가 다르면 같은 이름으로 여러 개 선언 가능
🎯 목적객체 생성 시 멤버변수의 빠른 초기화

💡 사용 예시

class Product {
    int id;
    String name;

    // 기본 생성자
    public Product() {}

    // 매개변수가 있는 생성자
    public Product(int id, String name) {
        this.id = id;
        this.name = name;
    }
}
Product p = new Product(1, "노트북"); // 호출 방법

⚙️ [ 클래스 설계 기본 구조 ]

// 클래스 설계 기본 템플릿
class Product {
    // 1️⃣ 멤버변수
    int id;
    String name;

    // 2️⃣ 생성자
    public Product() {}
    public Product(int id, String name) {}

    // 3️⃣ 메소드
    void printInfo() {}
}

💡 Tip:

  • 같은 의미의 여러 자료는 배열로 정의
  • 다른 타입의 묶음은 클래스로 정의

예시:

int[] priceList = new int[100]; // 배열
class Product { int id; int price; String name; } // 클래스

🔐 [ 접근 제한자 (Access Modifier) ]

제한자접근 가능 범위특징
public모든 클래스어디서든 접근 가능
private현재 클래스 내부외부 접근 불가
(default)같은 패키지접근 제한자 생략 시 기본값
protected같은 패키지 + 상속 관계상속 시 예외 허용

💡 캡슐화
→ 외부 접근을 제한하고 내부 구조를 숨겨 보안과 안정성 강화

⚠️ 클래스 자체에는 private 접근 제한자를 사용할 수 없음


📦 [ 패키지 (Package) ]

항목설명
📘 정의클래스 파일을 저장하는 공간, 즉 ‘폴더’ 역할
🚫 제약같은 패키지 내에서는 같은 클래스명 중복 불가
🧭 사용법import 경로.패키지명;

💡 기타 주의점

  • 같은 패키지 내 클래스는 import 불필요
  • java.lang 패키지는 자동 포함 (예: System, String)

🔄 [ Getter / Setter ]

항목설명
🎯 목적private 멤버변수 접근을 위한 메소드
⚙️ setter데이터 저장 / 유효성 검사
🔍 getter데이터 반환 / 조회
public void setName(String name) {
    this.name = name;
}
public String getName() {
    return name;
}

🔒 [ final ]

항목설명
📘 정의수정 불가능한 상태를 정의하는 키워드
🧱 특징반드시 초기값이 존재해야 함
💡 사용법final 타입 변수명 = 값;
final int MAX_COUNT = 10;

⚡ [ static ]

항목설명
📘 정의프로그램 실행 시 메모리에 1회만 로드되는 키워드
⚙️ 특징객체 생성 없이 사용 가능 (클래스명.메소드명())
💾 수명프로그램 종료 시 메모리에서 삭제

💡 static vs 일반 변수
| 구분 | static 변수 | 멤버변수 |
|------|--------------|-----------|
| 개수 | 프로그램 내 1개 | 객체마다 1개 |
| 접근 | 클래스명.변수명 | 객체명.변수명 |

class Test {
    static void method1() {}
    void method2() {}

    static void call() {
        method1(); // 가능
        // method2(); // ❌ 불가능
        new Test().method2(); // ✅ 가능
    }
}

🧱 [ 상수 (Constant) ]

항목설명
📘 정의변하지 않는 변수
💡 선언public static final 타입 상수명;
⚠️ 특징수정 불가, 프로그램 내 1개만 존재, 대문자로 표기
public static final double PI = 3.14159;

📋 [ 클래스 설계 유의사항 ]

항목설명
private 멤버변수는 getter/setter로 접근
생성자는 기본 + 전체 멤버 포함 2개 이상 작성
객체의 상태 확인 시 toString() 사용
static, final, private 조합은 보안/공유/불변의 목적

예시

private static final 클래스명 instance = new 클래스명();
// private → 현재 클래스에서만 접근 가능
// static → 객체 없이 접근 가능
// final → 수정 불가 (단일 인스턴스 보장)
// public → 외부 접근 허용 시 getInstance()로 우회

0개의 댓글