IT/JAVA

[JAVA] 자바 기초 복습 (Chapter.07) part1

j8970 2025. 2. 27. 21:52

📅 학습 기간: 2월 2주차
🎯 학습 내용: 접근 제어자 / 캡슐화 / getter & setter 메서드 / final


📌 1. 접근 제어자 (Access Modifiers)

💡 클래스, 변수, 메서드의 접근 범위를 제어하는 역할
✅ 외부로부터 데이터를 보호하고 객체 간의 의존성을 최소화
✅ 코드의 보안성을 향상시키고 캡슐화를 구현

🔹 접근 제어자의 종류

접근 제어자 접근 가능 범위
private 같은 클래스 내에서만 접근 가능
(default) 같은 패키지 내에서만 접근 가능
protected 같은 패키지 + 다른 패키지의 하위 클래스에서 접근 가능
public 모든 클래스에서 접근 가능

private (클래스 내부에서만 접근 가능)

class PrivateClass {
    private int myField;
    private void myMethod() {
        System.out.println(myField); // 같은 클래스 내부에서만 사용 가능
    }
}

(default) (같은 패키지 내에서 접근 가능)

class DefaultClass {
    int myField; // default 접근 제어자
    void myMethod() {} // 같은 패키지 내에서 접근 가능
}

protected (같은 패키지 + 상속 관계에서 접근 가능)

class ProtectedClass extends OtherClass {
    ProtectedClass() {
        System.out.println(otherField); // 상속받은 필드 사용 가능
        otherMethod(); // 상속받은 메서드 사용 가능
    }
}
class NotProtectedClass {
    public NotProtectedClass() {
        // 상속받지 않는 경우 외부 패키지에서 접근 불가
        // System.out.println(OtherClass.otherField);
        // OtherClass.otherMethod();
    }
}

public (어디서든 접근 가능)

public class PublicClass {
    public int myField;
    public void myMethod() {}
}

📌 2. 캡슐화 (Encapsulation)

💡 OOP에서 데이터와 해당 데이터를 처리하는 함수를 하나로 묶는 개념
✅ 객체 내부의 구현을 숨기고, 외부에서는 제공된 메서드를 통해서만 접근하도록 설정
✅ 데이터 보호, 유지보수성 향상, 사용자 편의성 증대


📌 3. Getter & Setter 메서드

💡 캡슐화된 데이터에 안전하게 접근하고 수정할 수 있도록 하는 기능
✅ 데이터 보호 및 정보 은닉
✅ 데이터 무결성 유지

✅ Getter (필드 값을 읽는 메서드)

  • get<필드명>() 형태로 작성
  • 예: getName(), getAge()

✅ Setter (필드 값을 설정하는 메서드)

  • set<필드명>() 형태로 작성
  • 예: setName(), setAge()
class Student {
    private String name;
    private int residentNumber; // 주민등록번호

    public String getName() { return name; }
    public void setName(String name) { this.name = name; }

    public void setResidentNumber(int number) {
        this.residentNumber = number;
    }
}

💡 어노테이션 @Getter, @Setter를 이용해 간단하게 구현 가능!


📌 4. final 키워드

💡 변수, 메서드, 클래스에서 사용 가능

🔹 final 키워드의 사용법

적용 대상 설명
final 변수 한 번 값을 지정하면 변경할 수 없는 상수 선언
final 메서드 자식 클래스에서 재정의(오버라이드)할 수 없음
final 클래스 상속될 수 없는 클래스 선언

final 변수 (상수 선언)

final int FINAL_VARIABLE = 30; // 값 변경 불가능

final 메서드 (오버라이드 방지)

class ParentClass {
    public final void myMethod() {
        System.out.println("재정의 할 수 없는 메서드!");
    }
}

final 클래스 (상속 금지)

final class Example1 {}
// class Example2 extends Example1 {} // 오류 발생 (final 클래스는 상속 불가)

🎯 소감

📌 접근 제어자는 데이터 보호 및 캡슐화에 필수적인 개념!
📌 Getter & Setter 메서드를 활용하면 데이터를 안전하게 다룰 수 있음!
📌 final 키워드는 코드의 변경을 방지하고 안정성을 높이는 데 중요한 역할!

🚀 마무리
이번 장에서는 접근 제어자, 캡슐화, Getter & Setter, final 키워드에 대해 학습했다! 🎯