🧠 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 {
int id;
String name;
public Product() {}
public Product(int id, String name) {}
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();
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 클래스명();