본문 바로가기
JAVA/개념

[ 개념 ] 자바(java) 인터페이스(interface)란

by hak0205 2020. 11. 15.
반응형

1. 인터페이스(interface)란?

인터페이스(interface)는 추상메서드와 상수로만 이루어져 있습니다. 인터페이스를 구현한다면 인터페이스의 메서드를 모두 구현해야 합니다. 그래야 추상클래스가 되지 않습니다. 

 

- 특징

1.1 다중상속

1.2 다형성

-> debugdaldal.tistory.com/169

 

[자바] 인터페이스 (Interface)

※ 인터페이스란? 일종의 추상클래스로써 인터페이스는 추상클래스처럼 추상메서드를 갖지만 추상클래스보다 추상화 정도가 높아서 추상클래스와 달리 몸통을 갖춘 일반 메서드 또는 멤버변

debugdaldal.tistory.com

 

2. 역할(사용이유)

2.1 표준화

인터페이스를 구현한 클래스가 어떤 기능의 메서드를 제공하는지 명시하는것 입니다. 즉, 클래스의 기본틀을 제공하여 개발자들 사이에 충돌 없이 일관되고 정형화된 프로그램 개발을 할 수 있습니다.

 

2.2 개발 시간 단축

 인터페이스가 작성이 되면 메서드의 리턴값, 매개변수, 함수이름등을 알 수 있으므로 메소드를 구현하는 쪽과 메서드를 작성하는 쪽이 동시에 작업이 가능합니다.

 

2.3 클래스간 결합도를 낮춘다

개발자가 제공자를 직접 사용하지 않고 인터페이스를 사용하면 제공자 쪽에 소스의 변경이 있어도 사용자 쪽에 직접적인 영향이 없어 변경을 하지 않아도 됩니다.

 

3. 인터페이스 요소

3.1. 상수

인터페이스는 추상메서드로 이루어지므로 인스턴스를 생성할 수 없으며 멤버 변수도 사용할 수 없습니다. 인터페이스에 선언한 변수는 상수로 변환됩니다. 예를 들어 double num= 3.14 -> final double num = 3.14로 컴파일 됩니다.

  package inferface;

  public interface interface_ex {
     double num = 3.14; // final num = 3.14
  }

 

3.2 defaultf 메서드

인터페이스를 통해 상속받는 메서드는 구현을 해야 하는데 인터페이스의 default 메소드는 이미 구현돼있기 때문에 상속받는 메서드에서 구현할 필요가 없습니다.

 

- interface_ex.interface

 public interface interface_ex {
    void ex();
    default void default_Interface(){
        System.out.println("default Interface");
    }
 }

- interface_Imp

 public class interface_Imp implements interface_ex{

    @Override
    public void ex() {
        System.out.println("default가 아닌 기존 인터페이스는 상속받은 클래스에서 구현을 해야 합니다.");
    }

    public static void main(String[] args) {
        interface_Imp interfaceImp = new interface_Imp();
        interfaceImp.ex();				  //default가 아닌 기존 인터페이스는 상속받은 클래스에서 구현을 해야 합니다.
        interfaceImp.default_Interface(); //default Interface
    }
 }

 

 

3.3 정적메서드

static 예약어를 사용하며 클래스 생성과 무관하게 사용할 수 있습니다. 정적메서드를 사용할 때는 인터페이스 이름을 직접 참조하여 사용합니다.

 

- interface_ex.interface

 public interface interface_ex {
    static void default_Interface(){
        System.out.println("static 메소드는 클래스 생성과 무관하게 사용할 수 있습니다.");
    }
 }

 

- interface_Imp

 

 public class interface_Imp{

    public static void main(String[] args) {
        interface_ex.default_Interface();
        //static 메소드는 클래스 생성과 무관하게 사용할 수 있습니다.
    }
    
 }
 
반응형

댓글