SHUSTORY

10-3 인터페이스 요소 살펴보기 본문

프로그래밍/JAVA

10-3 인터페이스 요소 살펴보기

어서오시우 2023. 3. 5. 20:45
728x90

인터페이스 상수

인터페이스는 추상 메서드로 이루어지므로

인스턴스를 생성할 수 없으며 멤버 변수도 사용할 수 없다.

 

인터페이스 상수

 

그럼에도 위와 같이 변수를 선언해도 오류가 발생하지 않는 이유는 무엇일까?

이는 인터페이스에 선언한 변수를 컴파일하면 상수로 변환되기 때문이다.

컴파일하면 위 코드는 다음과 같이 변환된다.

public static final double PI = 3.14;

public static final int ERROR = -9999999;

 

 

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

자바 8부터 제공되는 기능으로,

디폴트 메서드는 인터페이스에서 구현 코드까지 작성한 메서드이다.

인터페이스를 구현한 클래스에 기본적으로 제공할 메서드인 것이다.

정적 메서드는 인스턴스 생성과 상관 없이 사용할 수 있는 메서드이다.

 

하지만 디폴트 메서드나 정적 메서드를 추가했다고 해서 인터페이스가 인스턴스를 생성할 수 있는 것은 아니다.

 

디폴트 메서드

디폴트 메서드는 default 예약어를 사용하여 선언하는 방식으로 인터페이스에서 구현하며,

이후 인터페이스를 구현한 클래스가 생성되면 그 클래스에서 사용할 기본 기능이다.

디폴트 메서드

구현한 디폴트 메서드를 사용하려면 다음과 같이 클래스를 생성해야 한다.

디폴트 메서드 사용

디폴트 메서드는 인터페이스에서 이미 구현되어 있으므로

인터페이스를 구현한 클래스에서 코드를 구현할 필요가 없다.

 

디폴트 메서드 재정의하기

만약 이미 인터페이스에서 구현되어 있는 디폴트 메서드가 새로 생성한 클래스에서 원하는 기능과 맞지 않는다면,

하위 클래스에서 @Override를 작성한 뒤 디폴트 메서드를 재정의할 수 있다.

* 마우스 우클릭 - Source - Override/Implement Methods... 클릭

 

메서드 재정의

 

재정의할 메서드 선택
클릭하면 자동 작성

 

정적 메서드

정적 메서드는 static 예약어를 사용하여 선언하며 클래스 생성과 무관하게 사용할 수 있다.

정적 메서드를 사용할 때는 인터페이스 이름으로 직접 참조하여 사용한다.

 

인터페이스에 정적 메서드 구현

 

메서드 자료형 앞에 static 예약어를 사용하여 작성했다.

다음 예제를 통해 정적 메서드를 어떻게 사용하는지 알아보자.

 

16행 주목

 

private 메서드

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

따라서 공통으로 사용되는 메서드를 private로 구현하면 코드의 재사용성을 높일 수 있다.

클라이언트 프로그램에 제공할 기본 기능을 private 메서드로 구현하기도 한다.

 

private 메서드는 코드를 모두 구현해야 하므로 추상 메서드에서 private 예약어를 사용할 수는 없지만,

static 예약어는 함께 사용할 수 있다.

private static 메서드는 정적 메서드에서 호출하여 사용한다.

 

private 메서드

 

위와 같이 디폴트 메서드에서 private 메서드를 호출하거나,

정적 메서드에서 private static 메서드를 호출할 수 있다.

'프로그래밍 > JAVA' 카테고리의 다른 글

11-2 String 클래스  (0) 2023.03.06
11-1 Object 클래스  (0) 2023.03.06
10-2 인터페이스와 다형성  (0) 2023.03.05
10-1 인터페이스  (0) 2023.03.05
09-4 final 예약어  (0) 2023.03.04