예제
은행 계좌를 나타내는 클래스인 BankAccount
BankAccount에 잔고 역할인 balance는 외부에서 클래스에서 직접 접근하지 못하도록 private 사용
잔고는 Getter & Setter 형식으로만 접근 가능
구현
1. 최소한의 공개 - 필요한 것은 public으로 공개, 그 외는 private 또는 protected로 보호한다.
public class BankAccount {
private double balance; // 잔고
}
2. 정보 은닉 - private를 사용해 객체 상태를 숨기고 public 메서드를 통해 안전하게 데이터에 접근 및 수정한다.
public class BankAccount {
private double balance; // 잔고
// 잔고 조회
public double getBalance() {
return balance;
}
// 입금
public void deposit(double amount) {
if (amount > 0) {
balance += amount;
}
}
}
3. 유효성 검사 - 메서드 내에서 입력 데이터의 유효성을 검사하고, 유효하지 않은 경우 예외 발생
public void deposit(double amount) {
if (amount <= 0) {
throw new IllegalArgumentException("입금 금액은 양수여야 합니다.");
}
balance += amount;
}
4. getter & setter 사용 - 필드에 직접 접근하는 것이 아니라 getter(getBalance), setter(setBalance) 메서드 사용해 데이터 접근 및 수정한다.
public class BankAccount {
private double balance; // 잔고
// 잔고 조회 - Getter
public double getBalance() {
return balance;
}
// 잔고 설정 - Setter
public void setBalance(double balance) {
this.balance = balance;
}
}
5. final 사용 - 필드나 메서드를 final로 선언하여 불변성을 유지하거나 메서드 오버라이딩을 방지한다.
public final class ImmutableClass {
private final int value; // 불변 필드
public ImmutableClass(int value) {
this.value = value;
}
public int getValue() {
return value;
}
}
6. static 활용 - 유틸리티 메서드나 상수에 static을 사용하여 클래스 수준에서 접근 가능하도록 만든다.
public class MathUtils {
public static final double PI = 3.14159265359;
public static int add(int a, int b) {
return a + b;
}
}
7. 주석 - 코드 동작과 사용법 명확하게 설명
/**
* 이 클래스는 은행 계좌를 나타냄.
* @author hmw0908
*/
public class BankAccount {
// ...
}
반응형
'Dev > Spring&Java' 카테고리의 다른 글
[Java] 자바에서 JSON 배열 사용하기 (org.json.JSONArray) (0) | 2023.11.08 |
---|---|
[Java] 오버로딩(Overloading)과 오버라이딩(Overriding)이란 (0) | 2023.09.17 |
[Java] 접근 제어자(Access Modifiers) 이해하기 (0) | 2023.09.11 |
[Java] static 이해하기 (0) | 2023.09.09 |
[Spring] 이클립스에 Spring 프로젝트 생성 (STS4 설치) (0) | 2023.09.05 |