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

방용환·2023년 4월 12일
0
post-thumbnail

1. 인터페이스 (Interface)

1. 인터페이스 (Interface)

  • 인터페이스 (Interface) : 현실에 존재하는 대상을 클래스보다 추상적으로 표현하기 위한 자료형
  • 상수필드(Constant Field)와 추상메소드(Abstract Method)만 선언 가능
  • jdk-11버전 이상부터 정적메소드(Static Method)와 기본메소드(Default Method)도 선언 가능
[public] interface 인터페이스명 {
	자료형 필드명 =; // public static final 생략 가능
    		፧
    반환형 메소드명 (자료형 매개변수, ...); // public abstract 생략 가능}

2. 인터페이스 상속

  • 인터페이스의 이름은 파스칼 표기법을 사용하여 작성하는 것을 권장
  • 인터페이스는 클래스가 상속받아 사용하기 위한 자료형
  • 다중 상속 가능
public class 클래스명 implements 인터페이스명, 인터페이스명, ...{}
  • 인터페이스를 상속받은 자식클래스는 무조건 부모인터페이스의 모든 추상메소드를 오버라이드 선언해야 함
  • 인터페이스로 객체 생성은 불가능하지만 참조변수를 생성하여 인터페이스를 상속받은 자식클래스로 객체를 생성하여 저장 가능
    => 참조변수에 자식클래스의 메소드 호출 (묵시적 객체 형변환)
  • 인터페이스는 다른 인터페이스를 상속받아 사용 가능
public interface 인터페이스명 extends 인터페이스명, 인터페이스명, ...{}

3. 인터페이스 사용 이유

  1. 클래스의 단일 상속 관련 문제를 일부 보완하기 위해
    ex1) public class 늑대인간 extends 인간, 늑대 (X)
    ex2) public class 늑대인간 extends 인간 implements 늑대 (O)
    ex3) public class 흡혈늑대인간 extends 인간 implements 늑대, 흡혈귀 (O)

  2. 클래스에 대한 작업지시서의 역할을 제공하기 위해
    => 인터페이스를 상속받은 모든 자식클래스에 동일한 형태의 메소드가 선언되도록 규칙 제공
    ex) TV or radio or smartphone >> 볼륨 증가, 볼륨 감소 등을 인터페이스로 만듦
    => 클래스간의 결합도를 낮추어 시스템 변경에 따른 유지보수의 효율성을 증가


2. 기본메소드 (Default Method)

1. 기본메소드 (Default Method)

** jdk-11 이상에서 선언 가능

  • 기본메소드 (Default Method) : 인터페이스를 상속받은 자식클래스에서 오버라이드 선언하지 않아도 되는 메소드
    => 오버라이드 선언하지 않은 경우 기본메소드 호출
default 반환명 메소드명 (자료형 매개변수, ...) {
	명령;
    명령;}

0개의 댓글