📚 자바 객체지향 핵심 문법 5종 정리 – 접근제어자부터 다형성까지!
자바의 객체지향(OOP) 문법 중 실무와 시험에 자주 등장하는 5가지 핵심 주제를 예제 코드와 함께 정리했습니다.
접근제어자, final 키워드, 클래스 타입 변환, 다형성 등 꼭 알아야 할 내용을 순서대로 익혀보세요!
🧩 1. 접근제어자 – public, protected, default, private
✅ 핵심 요약
| 제어자 |
접근 가능 범위 |
설명 |
| public |
어디서든 가능 |
외부 공개 |
| protected |
같은 패키지 + 상속받은 자식 클래스 |
부분 공개 |
| (default) |
같은 패키지 내 |
생략 가능 |
| private |
같은 클래스 내 |
완전 은닉 |
✅ 코드 핵심 포인트
class PrivateClass {
private int myField;
private void myMethod() {
System.out.println(myField);
}
}
- 외부에서 myField, myMethod() 접근 불가
- ProtectedClass는 OtherClass를 상속받아 외부 패키지라도 protected 멤버 접근 가능
⚠️ 주의할 점
- 클래스 선언 자체엔 protected 사용 불가 (중첩 클래스 제외)
- import 패키지.*는 편리하지만 유지보수 측면에서 권장되지 않음
🔒 2. final 키워드 – 상수화, 재정의 금지, 상속 금지
✅ 사용 위치
| 위치 |
의미 |
| 변수 |
값 변경 불가 (상수) |
| 메서드 |
오버라이딩 금지 |
| 클래스 |
상속 금지 |
✅ 코드 예시
final int FINAL_VARIABLE = 30;
public final void myMethod() {
System.out.println("재정의 불가 메서드");
}
✅ 불변성 예제
private final String gender;
StudentClass(String gender) {
this.gender = gender; // 생성자 주입 방식
}
⚠️ 주의할 점
- final 변수는 반드시 "선언과 동시에" 초기화하거나, 생성자에서 초기화
- 상속, 오버라이딩을 차단하므로 유연성 감소 가능
🔄 3. 클래스 타입 변환 – 업캐스팅과 다운캐스팅
✅ 핵심 개념
| 변환 종류 |
설명 |
형변환 필요 여부 |
| 업캐스팅 |
자식 → 부모 타입 |
X (자동 변환) |
| 다운캐스팅 |
부모 → 자식 타입 |
O (명시적 변환) |
✅ 예제 코드
G_Parent parent = new G_Child(); // 업캐스팅
G_Child child = (G_Child) parent; // 다운캐스팅
⚠️ 주의할 점
- 다운캐스팅 시 instanceof 연산자 사용해 타입 확인 필요
- 잘못된 캐스팅 시 ClassCastException 발생
🚗 4. 다형성 (Polymorphism) – 하나의 타입, 다양한 동작
✅ 개념
- 하나의 부모 클래스 타입으로 여러 자식 객체를 참조 가능
- 오버라이딩을 통해 동일한 메서드 이름으로 서로 다른 동작 수행
✅ 예제 코드
Vehicle bus = new Bus();
bus.depart(); // "버스가 출발합니다"
Vehicle subway = new Subway();
subway.depart(); // "열차가 출발합니다"
✅ instanceof 활용
if (bus instanceof Bus) {
Bus myBus = (Bus) bus;
}
⚠️ 주의할 점
- 다형성은 반드시 상속 + 오버라이딩 + 업캐스팅이 모두 갖춰져야 작동
- instanceof 남용 지양 → 다운캐스팅이 꼭 필요한 상황에서만 사용