클래스와 객체의 개념

클래스(Class)란?

객체를 생성하기 위한 설계도(템플릿)

즉, 속성(필드)와 동작(메서드)을 정의하는 툴

 

클래스 정의

class Car {
    String brand; // 속성 (필드)
    int speed;

    void accelerate() { // 동작 (메서드)
        speed += 10;
        System.out.println(brand + "가 속도를 올립니다. 현재 속도: " + speed);
    }
}

객체(Object)란?

클래스를 기반으로 생성된 실체(인스턴스)

즉, 클래스에서 정의한 속성과 동작을 실제로 가지고 있는 개별 데이터

 

객체 생성

public class Main {
    public static void main(String[] args) {
        Car myCar = new Car();  // 객체 생성
        myCar.brand = "Tesla";  // 속성 값 설정
        myCar.speed = 0;
        
        myCar.accelerate(); // 동작 수행
    }
}

 

➡︎ myCarCar 클래스로부터 만들어진 객체!

➡︎ 개별 객체에 속성을 설정할 수 있음 (myCar.brand = "Tesla")


객체를 사용하는 이유

  1. 코드의 재사용성 증가
    • 클래스를 한 번 정의하면 여러 객체를 생성할 수 있음
    • 같은 구조를 가진 객체를 만들 때 중복 코드를 줄일 수 있음
  2. 유지보수성 향상
    • 코드가 모듈화되므로, 특정 기능을 수정할 때 다른 부분에 영향을 줄 가능성이 낮아짐
    • 관련 기능을 묶어 가독성이 향상됨
  3. 캡슐화 및 정보 은닉 가능
    • 객체 내부의 데이터를 보호하고, 불필요한 접근을 제한할 수 있음
    • 외부에서는 제한된 방식으로만 데이터를 변경할 수 있도록 제어 가능

캡슐화

캡슐화(Encapsulation)란?

객체의 내부 데이터를 외부에서 직접 접근하지 못하도록 보호하는 개념

➡︎ 데이터 보호 + 객체 내부 구현 숨기기 가능


접근 제어자(Access Modifier)

Java 에서는 접근 제어자를 사용해 데이터 접근 범위를 제한할 수 있음

  • private: 클래스 내부에서만 접근 가능, 가장 제한적
  • protected: 같은 패키지 또는 상속 관계에서 접근 가능
  • public: 어디서든 접근 가능, 가장 개방적

 

캡슐화 적용

class BankAccount {
    private int balance = 0; // private으로 직접 접근 불가

    public void deposit(int amount) { // 외부에서는 public 메서드로 접근
        if (amount > 0) {
            balance += amount;
            System.out.println("입금 완료! 현재 잔액: " + balance);
        }
    }

    public int getBalance() { // 잔액 조회 메서드
        return balance;
    }
}

 

 

캡슐화된 객체 사용

public class Main {
    public static void main(String[] args) {
        BankAccount account = new BankAccount();
        account.deposit(1000);
        
        System.out.println("현재 잔액: " + account.getBalance());
    }
}

 

➡︎ balance 필드는 private 이므로 외부에서 직접 접근 불가

➡︎ deposit() 메서드를 통해서만 잔액 변경 가능! ⭐️ 데이터 무결성 유지 ⭐️


주요 포인트

  • 클래스와 객체의 차이를 명확히 알아야 함!
    • 클래스: 객체를 만들기 위한 설계도
    • 객체: 클래스를 기반으로 생성된 실체
  • 객체를 사용하는 이유를 코드 재사용성, 유지보수성, 캡슐화 관점에서 논리적으로 설명할 줄 알아야 함!
    • 코드 재사용성 증가
    • 유지보수성 향상
    • 캡슐화를 통한 정보 보호
  • 캡슐화접근 제어자와 실제 활용 예시를 알고 있어야 함!
    • 객체 내부 데이터를 외부에서 직접 접근하지 못하게 보호
    • private, public 등의 접근 제어자를 사용

 

+ Recent posts