[Java] 추상화

G·2024년 6월 25일
0

Java

목록 보기
11/21
post-thumbnail

✍️ 추상화

✏️  추상화 (abstraction) 란?

  • 객체지향 프로그래밍에서 추상화란 클래스들에서 공통적인 속성과 기능을 추출하여 상위 클래스를 만들어내는 것 이라고 합니다.
  • 반드시 상위 클래스가 아닌, 공통적인 속성과 기능을 정의하는 하위 클래스일 수도 있습니다.

✏️  추상화의 장점

  • 중복 코드 감소: 공통된 기능을 추출하여 중복 코드를 줄일 수 있습니다.
  • 코드의 재사용성: 추상 메서드와 클래스는 다양한 곳에서 재사용할 수 있습니다.
  • 유지 보수 시간 단축: 공통 기능을 한 곳에서 관리하기 때문에 유지 보수가 쉽습니다.
  • 생산성 및 가독성 증가: 추상화를 통해 코드가 더 명확해지고, 개발 생산성이 향상됩니다.

✏️  추상 메서드 (Abstract Method)

  • 추상 메서드는 선언부만 존재하며, 구현부는 작성되어 있지 않습니다.
  • 추상 메서드가 포함된 클래스를 상속받은 하위 클래스가 반드시 추상 메서드를 오버라이딩하여 사용해야 합니다.
  • 추상 메서드를 선언할 때는 abstract 키워드를 사용합니다.
    abstract {반환 타입} {메서드명}();

✏️  추상 클래스 (Abstract Class)

  • 하나 이상의 추상 메서드를 포함하는 클래스를 추상 클래스라고 합니다.
  • 추상 클래스에서는 추상 메서드뿐만 아니라 생성자, 필드, 일반 메서드도 포함할 수 있습니다.
  • 추상 클래스는 미완성 되었기에, 인스턴스를 생성할 수 없습니다.
  • 추상 클래스를 선언할 때는 abstract 키워드를 사용해야 합니다.
    abstract class {클래스명} {
    	abstract {반환 타입} {메서드명}();
    }

✏️  추상 메서드 & 클래스 예시

// 추상 클래스 Animal
abstract class Animal {
    // 공통 속성
    String name;

    // 생성자
    Animal(String name) {
        this.name = name;
    }

    // 추상 메서드 - 하위 클래스에서 구현해야 함
    abstract void makeSound();

    // 일반 메서드
    void sleep() {
        System.out.println(name + " is sleeping...");
    }
}

// 하위 클래스 Dog
class Dog extends Animal {
    // 생성자
    Dog(String name) {
        super(name);
    }

    // 추상 메서드 구현
    @Override
    void makeSound() {
        System.out.println("Woof!");
    }
}

// 메인 클래스
public class Main {
    public static void main(String[] args) {
        Animal dog = new Dog("Buddy");

        dog.makeSound(); // 출력: Woof!
        dog.sleep();     // 출력: Buddy is sleeping...
    }
}
profile
기!술! 블로그

0개의 댓글