본문 바로가기

복습용

15-1.인터페이스 요소

인터페이스 상수

인터페이스는 추상 메소드로 이루어지므로 인스턴스를 생성할 수 없으며 멤버 변수도 사용할 수 없습니다. 

하지만 인터페이스에서 선언한 변수는 컴파일되면서 상수로 변환됩니다.

 

 

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

디폴트 메소드

디폴트 메소드랑 말 그대로 기본으로 제공되는 메소드입니다. 디폴트 메소드는 인터페이스에서 구현하지만, 이후 인터페이스를 구현한 클래스가 생성되면 그 클래스에서 사용할 기본 기능 입니다. 디폴트 메소드를 선언할 때는 default 예약어를 사용합니다.

 

 

디폴트 메소드의 생성

디폴트 메소드는 일반 메소드와 똑같이 구현하면 되고, 메소드 자료형 앞에  default 예약어만 써 주면 됩니다.

새로 구현한 description() 디폴트 메소드를 사용하려면 다음 코드와 같이 CompleteCalc 클래스를 생성해야 합니다.

 

디폴트 메소드의 실행 예

디폴트 메소드는 인터페이스에 이미 구현되어 있으므로 인터페이스를 구현한 추상 클래스 Calculator나 추상 클래스를 상속받은 CompleteCalc 클래스에서 코드를 구현할 필요가 없습니다. 14행을 보면 calc 인스턴스를 사용하여 description() 메소드를 호출했습니다.

 

 

 

정적 메소드

정적 메소드는 static 예약어를 사용하여 선언하며 클래스 생성과 무관하게 사용할 수 있습니다. 정적 메소드를 사용할 때는 인터페이스 이름으로 직접 참조하여 사용합니다. 

 

정적 메소드는 static 예약어를 사용한다

 

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

16행을 보면 Calc.total(arr)처럼 인터페이스 이름으로 직접 ㅊ마조하여 정적 메소드를 호출합니다. total()메소드가 수행되면 배열의 모든 요소 값을 더한 결과 값을 반환하므로, 1부터 5까지 더한 값 15가 출력됩니다.

 

private 메소드

private 메소드는 자바9 부터 인터페이스에 private 메소드를 구현할 수 있다고 합니다. private 메소드는 인터페이스를 구현한 클래스에서 사용하거나 재정의할수 없습니다. 따라서 기존에 구현된 코드를 변경하지 않고 인터페이스를 구현한 클래스에서 공통으로 사용하는 경우에 private 메소드로 구현하면 코드 재사용성을 높일 수 있습니다. 또한 클라이언트 프로그램에 제공할 기본 기능을 private 메소드로 구현하기도 합니다.

'복습용' 카테고리의 다른 글

16.Object 클래스 (equals, hash)  (0) 2020.04.01
15-2.인터페이스 활용  (0) 2020.04.01
15.인터페이스  (0) 2020.04.01
2. eclipse를 활용하여 소스코드 작성  (0) 2020.03.19
1. Java & eclipse 학습용 다운로드 및 설치  (0) 2020.03.19