JAVA

[java] 추상화 Abstraction

닉의네임 2025. 5. 14. 06:48
반응형

Java에서 추상화(Abstraction)는 복잡한 시스템을 단순화하여, 사용자나 개발자가 불필요한 세부사항에 신경 쓰지 않고 핵심 기능만을 사용할 수 있도록 하는 개념입니다. 추상화는 주로 **인터페이스(Interface)**와 **추상 클래스(Abstract Class)**를 통해 구현됩니다.

 

 

추상화의 주요 특징

  1. 세부 구현을 숨긴다: 객체의 동작을 정의하지만, 어떻게 동작하는지는 숨깁니다.
  2. 핵심 개념만 제공: 필요한 기능만을 외부에 제공하여, 시스템을 더 쉽게 사용할 수 있도록 합니다.

 

 

추상화 방법

인터페이스 (Interface):

  • 인터페이스는 구현체가 없고, 메소드 선언만 존재합니다.
  • implements 키워드를 사용하여 클래스를 인터페이스에 연결하고, 메소드들을 실제로 구현합니다.
interface Animal {
    void makeSound();  // 추상 메소드
}

class Dog implements Animal {
    public void makeSound() {
        System.out.println("Woof!");
    }
}

 

추상 클래스 (Abstract Class):

  • 추상 클래스는 클래스에서 일부 메소드를 구현할 수 있지만, 완전히 구현되지 않은 추상 메소드를 포함할 수 있습니다.
  • extends 키워드를 사용하여 클래스를 상속하고, 추상 메소드를 구현합니다.
abstract class Animal {
    abstract void makeSound();  // 추상 메소드

    void sleep() {  // 구현된 메소드
        System.out.println("Sleeping");
    }
}

class Dog extends Animal {
    void makeSound() {
        System.out.println("Woof!");
    }
}

 

추상화의 장점

  • 유지보수 용이: 복잡한 세부사항을 숨기고, 구현체를 변경하더라도 추상화된 부분만 변경하면 되므로 유지보수가 쉬워집니다.
  • 모듈화: 코드의 각 부분을 독립적으로 개발할 수 있게 도와줍니다.
  • 유연성: 여러 가지 구현체를 쉽게 추가할 수 있어 유연한 확장이 가능합니다.

추상화는 **객체 지향 프로그래밍(OOP)**의 핵심 원칙 중 하나로, 실제 구현과는 독립적으로 동작할 수 있게 해줍니다.

반응형