Interface

2021. 1. 14. 14:502021/JOB DA STUDY

인터페이스의 구현(Implements)과 상속(Extends)

JAVA에서 인터페이스는 

  • 개발자 사이의 코드 규약을 정한다.
  • 여러 구현체에서 공통적인 부분을 추상화한다. (다형성)
//자바의 인터페이스 : 추상 메서드의 모음 (구현부가 없는 메서드)
public interface Practice {
    void practiceEx();
}

구현부가 없으므로 인터페이스를 만드는 경우 반드시 구현하는 클래스를 만들어야하며, 인터페이스를 구현하기로      한 클래스는 반드시 인터페이스에 명시되어 있는 추상메서드(EX-practiceEx)들을 모두 구현해야한다.

public class Example implements Practice {
    //...
    @Override
    public void practiceEx(){
        //...
    }
}

 

인터페이스는 구현 뿐만 아니라 인터페이스 사이의 상속 또는 구체 클래스에서 여러 인터페이스 상속이 가능하다.

public interface Example extends Practice{
}

 

Default 접근 제어자

자바8 버전 이상부터는 인터페이스에서 default 접근제어자( public )를 사용할 수 있게 되었다.

이는 인터페이스 내에서 직접 메서드를 구현한다는 의미의 접근 제어자이다.

이를 구현한 구체 클래스는 @Override 없이 이 default 메서드를 사용할 수 있고, 오버라이딩 역시 할 수 있다.

인터페이스에 필드 변수를 선언하면 public static final 로 선언해야 하며, 이를 생략하면 기본으로 설정된다.

메서드를 private으로 설정하면 구현체를 인터페이스 내에서 구현해야한다.

 

WHY? INTERFACE

"다형성"을 위함

다형성은 상속받은 클래스 또는 인터페이스의 메서드를 재정의해 서로 다른 행동을 만들 수 있다.

상속을 통해 상위 클래스의 타입으로 통일한 후 하위 클래스들을 하나의 타입으로 관리할 수 있디 

또한 인터페이스는 구현체가 없으므로 구현한 클래스에서 모든 구현체를 만들어야한다.

예를 들어 A, B 클래스가 있으면 A 크래스를 사용하다가 다른 기존 코드의 변경을 거의 하지않고 B클래스로 쉽게 변경 가능하다.

 

인터페이스 구현과 상속의 차이

인터페이스의 구현은  어떤 기능을 할 수 있다고 "명세"를 해주는 것이다.

 

상속은 중복 코드 제거가 가능하고 깔끔한 코드 작성이 가능하지만, 변화가 발생하는 순간 상속의 구조는 깨지기 쉽다. 

예를 들어 상속관계에서 부모클래스에서는 기능이 추가됐는데 자식클래스 중에서 하나는 추가된 기능을 사용할 수 없도록 한다면 상속관계가 깨질수도 있다.

  • IS-A관계가 확실
  • 설계 이후 변화가 없는 곳

'2021 > JOB DA STUDY' 카테고리의 다른 글

Super  (0) 2021.01.15
디자인패턴_Command Pattern of Behavioral Pattern  (0) 2021.01.14
포트포워딩  (0) 2021.01.14
VMware Network  (0) 2021.01.12
SSH  (0) 2021.01.11