어제 오늘 내일

[Java] 객체지향 4대 원칙 정리 (상속, 추상화, 캡슐화, 다형성) 본문

IT/Java

[Java] 객체지향 4대 원칙 정리 (상속, 추상화, 캡슐화, 다형성)

hi.anna 2025. 12. 27. 09:20

Java를 비롯한 객체지향 프로그래밍(OOP)에서는 4대 핵심 원칙이 존재합니다.
바로 상속(Inheritance), 추상화(Abstraction), 캡슐화(Encapsulation), 다형성(Polymorphism)입니다.
이 네 가지가 객체지향의 구조와 설계를 이루는 기본 뼈대이며, 서로 유기적으로 연결되어 동작합니다.

 

1. 상속(Inheritance)

상속은 기존 클래스(부모)의 속성과 기능을 새로운 클래스(자식)가 물려받는 것입니다.

특징

  • 부모 클래스의 필드와 메서드 재사용
  • 코드 중복 감소
  • 자식 클래스에서 기능 확장 가능

예제

class Animal {
    void eat() {
        System.out.println("먹습니다");
    }
}

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

설명

  • Dog는 Animal이 가진 eat()을 그대로 사용
  • bark()는 Dog만의 기능

 

2. 추상화(Abstraction)

추상화는 불필요한 구현은 숨기고, 핵심 개념만 드러내는 것입니다.
구체적인 동작은 자식 클래스에서 정의하도록 하여 구조를 단순화합니다.

특징

  • 공통 기능을 추출해 상위 구조 정의
  • 세부 구현은 하위 클래스에 위임
  • 복잡도 감소 및 설계 명확화

예제 (추상 클래스)

abstract class Animal {
    abstract void sound(); // 세부 구현 없음
}

예제 (인터페이스)

interface Printable {
    void print();
}

설명

  • "어떻게"가 아닌 "무엇을 해야 하는지"를 정의

 

3. 캡슐화(Encapsulation)

캡슐화는 객체의 내부 데이터(필드)를 숨기고, 메서드를 통해서만 접근하게 하는 것입니다.
데이터 보호와 일관성 유지에 핵심적인 역할을 합니다.

특징

  • 정보 은닉(private 변수)
  • getter/setter로 안전한 접근 제공
  • 객체 상태 보호

예제

class Person {
    private int age;

    public int getAge() { return age; }
    public void setAge(int age) {
        if (age >= 0) this.age = age;
    }
}

설명

  • 외부에서 age를 직접 변경할 수 없음
  • setter에서 유효성 검사가 가능

 

4. 다형성(Polymorphism)

다형성은 같은 타입(부모)으로 다양한 객체(자식)를 처리할 수 있는 능력입니다.
오버라이딩된 메서드는 실제 객체 타입을 기준으로 실행됩니다.

특징

  • 코드 유연성 증가
  • 부모 타입으로 여러 자식 객체 처리 가능
  • 오버라이딩 기반 동작

예제

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

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

class Cat extends Animal {
    @Override
    void sound() { System.out.println("야옹"); }
}

Animal a = new Dog();
a.sound(); // 멍멍

설명

  • 변수는 Animal 타입이지만, 실행되는 메서드는 실제 객체(Dog) 기준

 

5. 4대 원칙 요약 표

원칙 핵심 개념 효과
상속 부모 기능을 자식이 물려받음 코드 재사용, 확장성
추상화 공통 규칙 정의, 구현은 자식 복잡도 감소, 구조 명확
캡슐화 내부 데이터 보호, 접근 제한 안정성, 유지보수성
다형성 한 타입으로 여러 객체 다룸 유연성, 확장성

 

6. 4대 원칙은 어떻게 연결될까?

  • 추상화로 규칙(인터페이스/추상 메서드)을 만들고
  • 상속으로 구조를 확장하며
  • 다형성으로 하나의 타입으로 다양한 행동을 수행하고
  • 캡슐화로 데이터와 그 방식을 보호합니다.

즉, 네 가지 원칙은 각각 독립적이지만 함께 사용할 때 OOP의 강력함이 드러납니다.

 

 

반응형
Comments