클래스와 객체의 개념

    클래스(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