[Java] 인터페이스

Korangii·2024년 7월 9일
0

Java

목록 보기
20/24
post-thumbnail

인터페이스의 역할

  • 인터페이스
    • 두 객체를 연결하는 역할
    • 다형성 구현에 주로 사용
      • 객체 A는 인터페이스를 통해 객체 B를 사용할 수 있다.
      • 객체 A는 인터페이스의 메소드만 사용하므로 객체 B가 객체 C로 변경된 것에는 관심이 없다. 객체 B의 메소드 실행 결과와 객체 C의 메소드 실행 결과가 다르다면, 객체 A는 객체 교체로 인해 다른 결과를 얻게 된다.

인터페이스와 구현 클래스 선언

  • 소스 파일 : *.java 형태
  • 컴파일 : *.class 형태
  • 물리적 형태를 클래스와 동일하다.
  • 소스를 작성할 때 선언하는 방법과 구성 멤버가 클래스와 다르다.
  • 인터페이스 선언 : interface 키워드 사용
interface 인터페이스명 { ... } // default 접근 제한
public interface 인터페이스명 { ... }  // public 접근 제한
public interface 인터페이스명 {
	 public 상수 필드
     public 추상 메소드
     public 디폴트 메소드
     public 정적 메소드
     private 메소드
     private 정적 메소드
  • 구현 클래스 선언
    • 객체 A가 인터페이스의 추상 메소드를 호출하면 인터페이스는 객체 B의 메소드를 실행한다. 그렇다면 객체 B는 인터페이스에 선언된 추상 메소드와 동일한 선언부를 가진 (재정의된) 메소드를 가지고 있어야 한다. = 오버라이딩
    • 객체 B를 인터페이스를 구현한(implement) 객체라고 한다. 인터페이스에 정의된 추상 메소드에 대한 실행 내용이 구현(작성)되어 있기 때문이다.
public class B implements 인터페이스명 { ... }
  • implements 키워드는 해당 클래스가 인터페이스를 통해 사용할 수 있다는 표시

  • 인터페이스의 추상 메소드는 재정의한 메소드가 있다는 뜻이다.

  • 인터페이스도 하나의 타입이므로 변수의 타입으로 사용할 수 있다.

  • 참조 타입 : 인터페이스는 참조타입에 속하므로 변수에 null을 대입할 수 있다.

    • null : 객체를 참조하고 있지 않다는 뜻

상수 필드

  • public static final 특성을 갖는 불변의 상수 필드를 멤버로 가질 수 있다.
  • 상수명은 대문자로 작성하되, 서로 다른 단어로 구성되어 있을 경우에는 언더바(_)로 연결하는 것이 관례
  • 상수 : 구현 객체와 관련없는 인터페이스 소속 멤버이므로 인터페이스로 바로 접근해서 상수값을 읽을 수 있다.

추상 메소드

  • public 추상 메소드를 멤버로 가질 수 있다.
    • 추상 메소드
      • 리턴 타입, 메소드명, 매개변수만 기술된다.
      • 중괄호{}를 붙이지 않는 메소드이다.
      • 추상 메소드의 실행부를 갖는 재정의된 메소드가 있어야 한다.
      • 기본적으로 public 접근 제한을 갖기 때문에 public보다 더 낮으 접근 제한으로 재정의할 수 없다.
      • 추상 메소드 호출 방법 : 구현 객체가 대입되면 인터페이스 변수로 호출할 수 있다. 어떤 구현 객체가 대입되었는지에 따라 실행 내용이 달라진다.
public abstract 리턴타입 메소드명(매개변수, ...);
  • 인터페이스로 구현객체 사용하는 법 : 인터페이스 변수 선언 + 구현 객체 대입
  • 인터페이스 변수 타입 : 참조 - 구현 객체가 대입되면 구현 객체의 번지를 저장한다.

디폴트 메소드

  • 인터페이스에는 완전한 실행 코드를 가진 디폴트 메소드 선언 가능
  • 실행부 존재 (추상 메소드는 실행부 없음)
  • default 키워드가 리턴 타입 앞에 붙는다.
  • 재정의 시 public 접근 제한자를 반드시 붙여야 한다. (default 키워드 생략)

정적 메소드

  • 인터페이스는 정적 메소드도 선언이 가능하다.
  • 구현 객체가 없어도 인터페이스만으로 호출이 가능하다.
  • 상수 필드를 제외한 추상 메소드, 디폴트 메소드, private 메소드 등을 호출할 수 없다.

private 메소드

  • public 접근 제한 : 인터페이스의 상수 필드, 추상 메소드, 디폴트 메소드, 정적 메소드
  • private 정적 메소드 : 구현 객체가 필요 없는 메소드
  • private 메소드 : 구현 객체가 필요한 메소드 (중복코드를 줄이기 위함)

다중 인터페이스 구현

인터페이스 상속

타입 변환

다형성

객체 타입 확인

봉인된 인터페이스

profile
https://honeypeach.tistory.com/ 로 이전했습니다.

0개의 댓글