📅 학습 기간: 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 키워드에 대해 학습했다! 🎯
'IT > JAVA' 카테고리의 다른 글
[JAVA] 자바 기초 복습 (Chapter. 08) (1) | 2025.03.01 |
---|---|
[JAVA] 자바 기초 복습 (Chapter.07) part2 (0) | 2025.02.28 |
[JAVA] 자바 기초 테스트 (오답노트) (0) | 2025.02.26 |
[JAVA] 자바 기초 복습 (Chapter.06) (0) | 2025.02.25 |
[JAVA] 자바 MacBook에서 Lombok 설치 & 설정 하기 (0) | 2025.02.25 |