인터페이스

Dami·2023년 10월 30일
0

JAVA

목록 보기
2/5
post-thumbnail

인터페이스란?

프로그래밍에서 특정 기능이나 동작을 약속하고 명세하는(구체적인 구현X) 역할을 한다.

특징

  • 다중 상속 : 클래스는 여러 인터페이스를 동시에 구현할 수 있다.
    예를 들어 Java에서 클래스의 다중 상속이 허용되지 않지만, 인터페이스를 통해 다중 상속 효과를 낼 수 있다.
  • 구체적인 구현X : 인터페이스 내의 method 내에는 본문이 없다. 즉, '무엇'을 해야 하는지만 정의 되어 있고, '어떻게' 실행되는지는 정의X

인터페이스가 가진 객체지향 특징

  • 추상화
    : 인터페이스는 메서드의 선언만을 포함하며 구체적인 구현 포함X.
    이를 통해 다양한 객체들이 동일한 인터페이스를 구현하면서도 각 객체 특성에 맞는 방식으로 method 구현 가능.

  • 다형성

    interface Animal {
        void speak();
    }
    
    class Dog implements Animal {
        @Override
        public void speak() { // 다형성 예시
            System.out.println("멍멍");
        }
    }
    
    class Cat implements Animal {
        @Override
        public void speak() { // 다형성 예시
            System.out.println("야옹");
        }
    }
    
    public class Main {
        public static void main(String[] args) {
            Animal a1 = new Dog();
            Animal a2 = new Cat();
    
            a1.speak();  // 멍멍
            a2.speak();  // 야옹
        }
    }
    

    위 코드에서 Cat과 Dog의 speak method는 다형성의 예시이다.
    즉, 인터페이스에서 여러 클래스의 객체는 인터페이스의 타입으로 구현되면서 다형성을 띌 수 있다.

인터페이스와 추상클래스의 차이

인터페이스 특징

  • '구현이 없다'
    인터페이스에 정의된 메서드들은 구체적인 구현을 갖지 않는다.
  • '다중 상속'
    클래스는 여러 인터페이스를 동시에 구현할 수 있다.

추상 클래스 특징

  • '구현이 가능하다'
    추상 클래스는 일부 method는 구체적인 구현을 가질 수 있다.
  • '단일 상속'
    한 class는 여러 추상 클래스를 동시에 상속받을 수 없다.

인터페이스 vs 추상클래스

1) 구현
- 인터페이스는 method의 명세만 제공한다.
무슨 말이냐? 이 method들이 어떤 행동을 해야하는지만 제시할 뿐, 구체적인 구현 내용은 포함하지 않는다.

- 추상클래스는 일부 method는 구현되어 있을 수 있고, 일부 method는 추상 method로 남겨져 있을 수도 있다.
즉, 추상 클래스를 상속 받는 자식 클래스는 이미 구현된 method는 재정의해서 사용할 수도 있지만, 재정의 하지 않고 사용할 수 있다.

0개의 댓글

관련 채용 정보