minlog
article thumbnail

 

인터페이스 ( interface )

인터페이스는 추상메서드로 구성되어 구현 코드가 없다. 

  • 개발자가 선언하지 않더라도 모든 메서드가 추상메서드로 선언된다. → public abstract 
  • 모든 변수는 상수로 선언된다. →  public static final

 

📑 interface 인터페이스 

interface 인터페이스명 {

}

📑 implements 인터페이스를 상속 받은 클래스 

public class 클래스명 implements 인터페이스명 {

}

 

 

 

💡인터페이스는 왜 사용하는가?

클래스나 프로그램이 제공하는 기능을 명시적으로 선언한다.

일종의 클라이언트 코드와의 약속이며 클래스나 프로그램이 제공하는 명세로 사용된다. ( 클라이언트 프로그램은 인터페이스에 선언된 메서드 명세만 보고 이를 구현한 클래스를 사용할 수 있다.)

어떤 객체가 하나의 인터페이스 타입이라는 것은 인터페이스가 제공하는 모든 메서드를 구현했다는 의미이다.

인터페이스를 구현한 다양한 객체(다형성)를 사용할 수 있다. 

EX) JDBC  인터페이스

 

 

 

 

💡추상 클래스 abstract  VS 인터페이스 interface

공통점

  • 추상 메서드를 가지고 있다. (코드의 독립성, 일관성 유지) : 설계도 역할

 

차이점

  • 클래스 / 인터페이스
  • 추상클래스는 abstract를 붙여야만 함. 인터페이스는 필수가 아니다.
  • 추상클래스와 같은 용도 하지만 인터페이스가 더 많이 사용된다.
  • 인터페이스는 다중상속이 가능하다.
  • implements → 구현한다. → 추상메서드 오버라이딩 해야한다.
  • 본인이 인터페이스를 생성 >> 코드의 독립성 일관성
  • java Api 인터페이스 사용 >> 특정한 고유 기능을 구현하기 위해서 사용.
  • 인터페이스로 형변환이 가능하다. >> 자바의 다양성을 표현

 

 

 

💡자바 8  이후의 추가되는 메서드

- default  메서드 :  구현 체가 있는 디폴트 메서드 생성

인터페이스 안에 구현체가 있는 메서드를 생성할 수 있게되었다.

인터페이스를 상속받을 경우 해당 메서드를 사용할 수 있고 재정의도 가능하다.

default void description(){
	System.out.println("디폴트 메서드")
}

 

- static 메서드 : 정적 메서드 

인스턴스 생성(new) 과 관계없이 인터페이스 타입으로 직접 호출해서 사용이 가능하다. 

기본적으로 인터페이스가 제공해야하는 기능을 정의할 수 있다. (상속 받은 클래스들이 사용해야할때)

static int total(int[] arr){
	int total = 0;
    for(int i : arr){
    	total += 1;
    }
    return total;
}

 

- private 메서드 (자바 9 이후 사용가능)

인터페이스를 구현한 클래스에서 사용하거나 재정의 할수 없음.

인터페이스 내부에서만 사용하기 위해 구현하는 메서드

인터페이스 내부의 default 메서드나 static 메서드에서 사용이된다.

 

 

 

profile

minlog

@jimin-log

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!