본문 바로가기
Programming/Java

자바의 인터페이스

by vita12321 2023. 7. 31.
728x90
반응형

자바의 인터페이스(Interface) 객체 지향 프로그래밍에서 여러 클래스들이 공통된 동작을 공유할 있도록 정의한 규약입니다. 인터페이스는 클래스 사이의 표준 과정을 확립하여 코드의 가독성과 확장성을 높여주며, 객체 지향 프로그래밍의 원칙 하나인 코드의 재사용성을 지키는데 도움이 됩니다. 이번 글에서는 자바의 인터페이스에 대해 자세히 알아보고, 예제 코드를 통해 기능을 이해해 보겠습니다.


 

1. 인터페이스의 개념 장점

 

인터페이스는 자바에서 키워드 'interface' 사용하여 선언되며, 모든 메서드가 추상 메서드(abstract method) 구성되어 있습니다. 인터페이스를 상속 받은 클래스는 해당 인터페이스에 선언된 메서드를 모두 구현해야 합니다. 인터페이스 사용 다음과 같은 장점들이 있습니다.

 

  • 코드의 재사용성
    공통된 동작을 인터페이스로 모듈화하면, 여러 클래스에서 해당 인터페이스를 구현할 수 있고 코드를 중복되게 작성할 필요가 없습니다.

  • 확장성
    새로운 기능이 추가되거나 변경되어야 할 경우, 인터페이스만 수정하여 관련된 클래스들에게 쉽게 변경점을 전달할 수 있습니다.

  • 다형성
    인터페이스를 구현한 클래스의 인스턴스를 인터페이스 타입으로 참조할 수 있어, 다양한 클래스들을 하나의 인터페이스로 관리할 수 있습니다.

 

2. 자바 인터페이스 구현 사용

 

자바에서 인터페이스를 구현하고 사용하기 위해서는 다음과 같은 과정들을 거칩니다.

 

인터페이스 선언

클래스에서 인터페이스 구현

 

예제로 설명하면 아래와 같습니다.

// 인터페이스 정의

interface Flyable {

    void fly(); // 모든 클래스가 구현해야 하는 추상 메서드

}
// 인터페이스를 구현하는 클래스 정의

class Bird implements Flyable {

    @Override

    void fly() {

        System.out.println("새가 날아갑니다!");

    }

}

 

class Airplane implements Flyable {

    @Override

    void fly() {

        System.out.println("비행기가 이륙합니다!");

    }

}

 

public class Main {

    public static void main(String[] args) {

        Bird bird = new Bird();       // 구현된 Bird 클래스 사용

        Airplane airplane = new Airplane(); // 구현된 Airplane 클래스 사용

 

        bird.fly(); // "새가 날아갑니다!"

        airplane.fly(); // "비행기가 이륙합니다!"

    }

}

 

위의 예제에서 Flyable 인터페이스이며, Bird Airplane 서로 다른 클래스지만 Flyable 인터페이스를 구현합니다. 이를 통해 새로운 있는 객체를 추가할 기존 코드를 수정하지 않고 간단하게 애플리케이션에 새로운 기능을 추가할 있습니다.


 

3. 인터페이스 예제

 

결제 방식을 나타내는 인터페이스를 정의하고, 여러 종류의 결제 방식 클래스를 구현해보겠습니다. 해당 인터페이스는 결제 금액과 결제 방식에 대한 정보를 출력하는 메서드를 구현할 것입니다.

// 인터페이스 정의

interface Payment {

    void pay(int amount);

}
// 인터페이스를 구현하는 클래스 정의

class CreditCard implements Payment {

    @Override

    void pay(int amount) {

        System.out.println(amount + "원을 신용카드로 결제합니다.");

    }

}

 

class Cash implements Payment {

    @Override

    void pay(int amount) {

        System.out.println(amount + "원을 현금으로 결제합니다.");

    }

}

 

public class Main {

    public static void main(String[] args) {

        CreditCard creditCard = new CreditCard(); //구현된 CreditCard 클래스 사용

        Cash cash = new Cash(); // 구현된 Cash 클래스 사용

 

        creditCard.pay(10000); // "10000원을 신용카드로 결제합니다."

        cash.pay(5000); // "5000원을 현금으로 결제합니다."

    }

}

 

자바 인터페이스를 통해 프로젝트의 규모가 커져도 코드의 유연성과 확장성을 향상시킬 있으며, 객체 지향 프로그래밍의 핵심 원칙을 준수하게 됩니다.

728x90
반응형

'Programming > Java' 카테고리의 다른 글

자바의 입출력  (0) 2023.08.02
자바의 내부 클래스  (0) 2023.08.01
자바의 추상 클래스  (0) 2023.07.30
자바의 다형성  (0) 2023.07.29
자바의 상속  (0) 2023.07.28