인터페이스 (Interface)

박주현·2022년 10월 18일
1

국비 공부

목록 보기
17/44

인터페이스 란?

제품을 나누어 개발한 후 하나로 합칠 때 미리 규격을 정하지 않으면 나중에 문제가 발생할 수 있다. 이때 필요한 것이 인터페이스로 사전에 정한 약속이나 규격을 의미한다.

인터페이스의 장점

  • 인터페이스만 준수하면 통합에 신경 쓰지 않고 다양한 형태로 새로운 클래스를 개발할 수 있다.
  • 클래스의 다중 상속을 지원하지 않지만, 인터페이스로 다중 상속 효과를 간접적으로 얻을 수 있다.

대표적 인터페이스

  • java.lang 패키지의 CharSequence, Comparable, Runnable 등
  • java.util 패키지의 Collection, Comparator, List 등

예를 들어, 객체의 크기를 비교하는 Comparable 인터페이스는 다음과 같다.

인터페이스 구조

interface 인터페이스이름 {
	// 상수 필드			-> 상수만 가능하기 때문에 public static final
    // abstract 메서드	-> 인터페이스의 모든 메서드 (아래 3가지 종류를 제외)가 
    						public abstract이기 때문에 public abstract 키워드 생략 가능
 	// default 메서드	->  JDK 8부터 가능
    // static 메서드		-> 	JDK 8부터 가능
    // private 메서드	->  JDK 9부터 가능
}

디폴트 메서드와 정적 메서드

  • 디폴트 메서드는 오버라이딩 괼 수 있지만, 정적 메서드는 오버라이딩 될 수 없다.
  • 디폴트 메서드는 인스턴스 메서드이므로 객체를 생성한 후 호출되지만, 정적 메서드는 인터페이스로 직접 호출한다.



인터페이스 상속

// 상속할 인터페이스가 여러 개라면 쉼표(,)로 연결한다.
interface 자식인터페이스 extends 부모인터페이스1, 부모인터페이스2 {
}

class 자식클래스 implements 부모인터페이스1, 부모 인터페이스2 {
}

// 인터페이스는 다중 상속할 수 있다.
clss 자식클래스 extends 부모클래스 implements 부모인터페이스1, 부모인터페이스2 {
}
// 클래스는 다중 상속할 수 없다.
class 자식클래스 extends 부모클래스1, 부모클래스2 {
}XXXXXXXXXXXXXXXXXXXXXXXXX 안됨.

package sec03;

public interface Coin {
	int PENNY = 1, NICKEL = 5, DIME = 10, QUARTER = 25;
}

package sec03;

public class Coin1Demo implements Coin {

	public static void main(String[] args) {
    	// Dime은 10센트입니다.
		System.out.println("Dime은 " + DIME + "센트입니다.");

	}

}

0개의 댓글