본문 바로가기
IT개발/JAVA

객체지향 4대 특징, 캡슐화·상속·다형성·추상화 완벽 정리

by 시간기억자 2025. 5. 9.
반응형

📄 본문

객체지향 프로그래밍(OOP)은 개발자가 꼭 알아야 할 핵심 개념 중 하나다.
특히 정보처리기사, NCS 필기, 개발자 채용 면접에서 자주 등장하는 주제이기도 하다.

객체지향의 핵심은 4가지 특징으로 요약할 수 있다:
캡슐화(Encapsulation), 상속(Inheritance), 다형성(Polymorphism), 추상화(Abstraction)


✅ 1. 캡슐화 (Encapsulation)

캡슐화는 데이터와 메서드를 하나의 객체로 묶고, 외부에서 접근할 수 없도록 숨기는 방식이다.
주로 private 접근제어자와 getter/setter 메서드로 구현된다.

public class User {
    private String password;

    public void setPassword(String pw) {
        this.password = pw;
    }

    public String getPassword() {
        return this.password;
    }
}

 

장점

  • 외부로부터 데이터 보호
  • 유지보수성 향상
  • 코드의 안정성 증가

✅ 2. 상속 (Inheritance)

상속은 기존 클래스의 속성과 기능을 다른 클래스가 물려받는 개념이다.
재사용성과 확장성을 높이는 데 효과적이다.

class Animal {
    void sound() {
        System.out.println("동물 소리");
    }
}

class Dog extends Animal {
    void sound() {
        System.out.println("멍멍");
    }
}
 

장점

  • 코드 재사용
  • 기능 확장 용이
  • 계층적 구조 구성 가능

✅ 3. 다형성 (Polymorphism)

같은 메서드명으로 서로 다른 동작을 구현하는 개념이다.
오버라이딩과 오버로딩이 대표적인 예시다.

class Shape {
    void draw() {
        System.out.println("도형 그리기");
    }
}

class Circle extends Shape {
    void draw() {
        System.out.println("원 그리기");
    }
}
 

장점

  • 유연한 코드 설계
  • 객체 교체 용이
  • 코드 가독성 향상

✅ 4. 추상화 (Abstraction)

불필요한 세부 사항은 숨기고 중요한 기능만 보여주는 개념이다.
인터페이스 또는 추상 클래스 등을 활용하여 구현한다.

abstract class Machine {
    abstract void operate();
}

class WashingMachine extends Machine {
    void operate() {
        System.out.println("세탁기 작동 중");
    }
}
 

장점

  • 복잡도 감소
  • 개발자 간 협업 효율 증가
  • 모듈화된 설계 가능

💡 실생활 비유로 이해하기

  • 캡슐화: 약은 캡슐에 싸여 있어 내부를 알 수 없고, 필요한 기능만 제공
  • 상속: 부모의 특징을 자식이 물려받음
  • 다형성: 같은 버튼이지만 TV에서는 켜기, 에어컨에서는 바람세기 조절
  • 추상화: 자동차 운전자가 내부 구조 몰라도 운전 가능

 

반응형

댓글