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

김상욱·2024년 11월 18일

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

OOP의 4대 특성 중 하나로, 복잡한 시스템에서 핵심적인 부분만 표현하고 불필요한 세부사항을 숨기는 개념.

  • 객체의 동작과 속성 중 꼭 필요한 부분만 외부에 제공. 인터페이스 등 사용.
  • 불필요한 세부사항 없이 핵심 기능에 집중할 수 있게 설계.
  • 추상화를 통해 유사한 기능을 가진 객체들을 하나의 공통된 구조로 묶을 수 있음.

추상 클래스(Abstract Class)

  • 공통된 속성과 메서드를 정의하고, 일부 메서드는 구현하지 않아 자식 클래스에서 구현하도록 강제.
abstract class Animal {
    // 일반 메서드
    public void eat() {
        System.out.println("This animal eats food.");
    }

    // 추상 메서드
    public abstract void makeSound();
}

class Dog extends Animal {
    @Override
    public void makeSound() {
        System.out.println("Bark");
    }
}

public class Main {
    public static void main(String[] args) {
        Animal dog = new Dog();
        dog.eat(); // "This animal eats food."
        dog.makeSound(); // "Bark"
    }
}

인터페이스(Interface)

  • 객체의 동작(행위)을 정의하는 추상화의 극대화된 형태.
interface Vehicle {
    void move();
}

class Car implements Vehicle {
    @Override
    public void move() {
        System.out.println("Car is moving");
    }
}

class Bicycle implements Vehicle {
    @Override
    public void move() {
        System.out.println("Bicycle is moving");
    }
}

0개의 댓글