[java] 자바 추상 클래스와 인터페이스의 기능 확장 방법

자바에서 추상 클래스와 인터페이스는 다형성을 구현하는 데 중요한 역할을 합니다. 이들을 통해 많은 기능을 확장할 수 있습니다. 이번 기사에서는 자바 추상 클래스와 인터페이스를 확장하는 방법에 대해 알아보겠습니다.

추상 클래스 확장하기

자바 추상 클래스는 abstract 예약어를 이용하여 선언됩니다. 추상 클래스는 하나 이상의 추상 메서드를 포함할 수 있으며, 추상 메서드는 하위 클래스에서 구현될 수 있도록 선언된 메서드입니다. 추상 클래스를 확장하여 기능을 구현하기 위해서는 다음 단계를 따릅니다:

  1. 추상 클래스를 상속받는 구체 클래스를 생성합니다.
  2. 구체 클래스에서 추상 메서드를 오버라이드하여 구현합니다.
  3. 구체 클래스에서 필요한 추가 기능을 구현합니다.

아래는 추상 클래스를 확장하는 예시 코드입니다:

public abstract class Animal {
    public abstract void sound();
    
    public void sleep() {
        System.out.println("동물이 잠을 잡니다.");
    }
}

public class Cat extends Animal {
    @Override
    public void sound() {
        System.out.println("야옹");
    }
    
    public void play() {
        System.out.println("고양이가 놀고 있습니다.");
    }
}

public class Main {
    public static void main(String[] args) {
        Cat cat = new Cat();
        cat.sound(); // "야옹" 출력
        cat.sleep(); // "동물이 잠을 잡니다." 출력
        cat.play(); // "고양이가 놀고 있습니다." 출력
    }
}

추상 클래스는 상속을 통해 확장되므로, 여러 개의 클래스에서 동일한 기능을 공유할 수 있습니다.

인터페이스 구현하기

자바 인터페이스는 추상 메서드의 집합으로 구성됩니다. 클래스는 인터페이스를 구현하는 것을 통해 인터페이스에 선언된 메서드를 구현할 수 있습니다. 인터페이스를 구현하기 위해서 다음 단계를 따릅니다:

  1. 구현 클래스를 생성하고, implements 예약어를 이용하여 인터페이스를 구현합니다.
  2. 인터페이스에 선언된 메서드들을 구현합니다.

아래는 인터페이스를 구현하는 예시 코드입니다:

public interface Printable {
    void print();
}

public class Book implements Printable {
    @Override
    public void print() {
        System.out.println("책을 인쇄합니다.");
    }
}

public class Magazine implements Printable {
    @Override
    public void print() {
        System.out.println("잡지를 인쇄합니다.");
    }
}

public class Main {
    public static void main(String[] args) {
        Book book = new Book();
        Magazine magazine = new Magazine();
        
        book.print(); // "책을 인쇄합니다." 출력
        magazine.print(); // "잡지를 인쇄합니다." 출력
    }
}

인터페이스를 구현함으로써 클래스들은 동일한 인터페이스를 가진 책임을 공유할 수 있습니다.

결론

자바에서 추상 클래스와 인터페이스를 활용하여 기능을 확장하는 방법을 알아보았습니다. 추상 클래스는 상속을 통해 기능을 확장하며, 인터페이스는 구현을 통해 기능을 확장합니다. 이 두 가지 개념을 적재적소에 잘 활용하여 유연한 소프트웨어 디자인을 구현할 수 있습니다.

참고 자료: