[Java] 추상화란 무엇인가요

orca·2024년 9월 22일

CS

목록 보기
20/46

추상화란 구체적인 사항은 감추고, 중요한 개념을 정의하는 것을 의미합니다. java 에서 추상화는 주로 추상 클래스와 인터페이스를 통해 구현됩니다.

추상화

  • 복잡한 시스템에서 불필요한 세부 사항을 숨기고 중요한 부분만을 드러내는 방식
  • java 에서 추상화는 추상 클래스와 인터페이스를 통해 구현됨
  • 설계와 구현을 분리하여 더 깔끔하고 유지보수 가능한 코드를 작성할 수 있게 함

핵심

  • 복잡성을 줄이는 것: 구체적인 세부 사항(구현)은 감추고, 중요한 개념(인터페이스 또는 기능)을 정의
  • 필요한 정보만 노출: 시스템의 내부 동작을 감추고, 외부에서는 필요한 정보와 기능만 사용할 수 있게 함
  • 인터페이스 제공: 사용자에게는 객체의 동작만 제공하고, 실제로 어떻게 동작하는지는 숨김

추상 클래스

  • 추상 클래스는 인스턴스를 만들 수 없는 클래스임
  • 추상 클래스는 하나 이상의 추상 메서드를 포함함
  • 추상 메서드는 구현되지 않고, 자식 클래스에서 반드시 구현해야 함

example

// 추상 클래스
abstract class Animal {
    // 추상 메서드 (구현 없음)
    public abstract void sound();

    // 일반 메서드 (구현 있음)
    public void sleep() {
        System.out.println("Sleeping...");
    }
}

// 추상 클래스를 상속받는 클래스
class Dog extends Animal {
    // 추상 메서드 구현
    @Override
    public void sound() {
        System.out.println("Dog barks");
    }
}

public class Main {
    public static void main(String[] args) {
        // Animal animal = new Animal(); // 추상 클래스는 인스턴스화 할 수 없음
        Animal myDog = new Dog();        // Dog 클래스는 추상 클래스의 추상 메서드 구현
        myDog.sound();                   // 출력: Dog barks
        myDog.sleep();                   // 출력: Sleeping...
    }
}
  • Animal은 추상 클래스이며, sound() 메서드는 추상 메서드로 정의됨
  • Dog 클래스는 Animal을 상속받아 sound() 메서드를 구현해야 함

인터페이스

  • 클래스가 구현해야 하는 메서드의 집합
  • 인터페이스의 모든 메서드는 구현을 생략한 상태로 정의됨

example

// 인터페이스 정의
interface Vehicle {
    void start();
    void stop();
}

// 인터페이스 구현
class Car implements Vehicle {
    @Override
    public void start() {
        System.out.println("Car starts");
    }

    @Override
    public void stop() {
        System.out.println("Car stops");
    }
}

public class Main {
    public static void main(String[] args) {
        Vehicle myCar = new Car(); // Vehicle 인터페이스를 구현한 Car 객체
        myCar.start();             // 출력: Car starts
        myCar.stop();              // 출력: Car stops
    }
}
  • Vehicle은 인터페이스로, start()stop() 메서드를 선언함
  • Car 클래스는 Vehicle 인터페이스를 구현하여 해당 메서드들을 정의
    ➡️ 인터페이스를 통해 Vehicle의 기능을 이용하고, 구체적인 동작은 Car 클래스에서 구현

0개의 댓글