Computer >> 컴퓨터 >  >> 프로그래밍 >> Java

자바의 추상화란? 개념부터 구현 방법까지 쉽게 이해하기

추상화(Abstraction)란 무엇인가?

사전적으로 추상화(abstraction)는 '구체적인 사건보다 개념을 다루는 성질'을 의미합니다. 일상생활에서도 쉽게 찾아볼 수 있는데, 대표적인 예가 바로 이메일입니다.

이메일을 보낼 때 우리는 내용을 작성하고, 받는 사람의 주소를 입력한 뒤 전송 버튼만 누르면 됩니다. 하지만 그 이면에서는 메일 서버가 어떤 프로토콜을 사용하는지, 메시지가 어떻게 전달되고 처리되는지 같은 복잡한 세부 사항들이 숨겨져 있습니다. 사용자는 이러한 내부 동작 방식을 전혀 알 필요가 없습니다. 이것이 바로 추상화가 실제 세계에서 작동하는 방식입니다.

프로그래밍에서의 추상화

소프트웨어 개발에서 추상화는 구현 세부 사항을 사용자로부터 숨기고, 필요한 기능만 제공하는 과정을 말합니다. 다시 말해, 사용자는 객체가 '무엇을 하는지(what)'에 대한 정보만 갖게 되고, '어떻게 하는지(how)'는 알 수 없도록 만드는 것입니다.

이러한 접근 방식은 다음과 같은 장점을 제공합니다.

  • 복잡성 감소: 불필요한 세부 정보를 숨겨 코드를 더 이해하기 쉽게 만듭니다.
  • 유지보수 용이: 내부 구현이 변경되더라도 외부에 노출된 인터페이스가 그대로라면 사용자 코드는 영향을 받지 않습니다.
  • 보안 강화: 중요한 내부 로직과 데이터를 외부로부터 보호할 수 있습니다.

자바에서 추상화를 구현하는 방법

자바에서는 크게 두 가지 방법으로 추상화를 구현합니다.

1. 추상 클래스(Abstract Class)

abstract 키워드로 선언되는 추상 클래스는 하나 이상의 추상 메서드(구현부가 없는 메서드)를 포함할 수 있으며, 직접 인스턴스를 생성할 수 없습니다. 자식 클래스가 반드시 추상 메서드를 구현하도록 강제함으로써 공통된 구조를 정의하는 역할을 합니다.

2. 인터페이스(Interface)

인터페이스는 구현해야 할 메서드의 시그니처만 정의하며, 실제 동작 방식은 이를 구현하는 클래스가 결정합니다. 자바 8 이후에는 디폴트 메서드(default method)와 정적 메서드도 포함할 수 있어 더욱 유연하게 활용됩니다.

두 방식 모두 '무엇을 해야 하는지'는 명확히 정의하면서 '어떻게 수행될지'는 숨기는, 자바 추상화의 핵심 원리를 실현합니다.