내가 개발해볼게!!

Do it! 자바 프로그래밍 입문 8일차 본문

Language/Java

Do it! 자바 프로그래밍 입문 8일차

보송송희 2022. 7. 2. 21:31

교재 맨앞쪽 진도표에 나와 있는 15일 코스로 공부하고 있습니다!!

Do it! 자바 프로그래밍 입문 8일차
10장 인터페이스
- 10-1 인터페이스란?
- 10-2 인터페이스와 다형성
- 10-3 인터페이스 요소 살펴보기
- 10-4 인터페이스 활용하기

 

  10장 인터페이스

  • 인터페이스에 대해 배웠습니다.

인터페이스는 클래스나 프로그램이 제공하는 기능을 명시적으로 선언하는 역할을 합니다. 코드 없이 추상 메서드와 상수로만 이루어져 있습니다. 이때 인터페이스에 선언한 모든 메서드는 추상 메서드로, 모든 변수는 상수로 자동 변환됩니다. 

 

인터페이스는 어떤 메서드를 제공하는지 미리 알려주는 명세, 약속의 역할을 합니다. 어떤 클래스를 사용하려고 할 때 클래스의 코드 전체를 살펴볼 필요 없이 인터페이스만 보고도 클래스를 어떻게 사용할지 알 수 있습니다.

좌측의 Calc.java가 인터페이스, 우측의 Calculator.java가 인터페이스를 구현한 추상 클래스입니다. 두 코드 모두 인터페이스를 생성할 수 없고, 추상 클래스를 상속받아 모든 메서드를 구현한 구체적인 클래스만이 인스턴스를 생성할 수 있습니다.

 

인터페이스를 사용하면 확장성 있는 프로그램을 만들 수 있습니다. 새로운 기능을 추가하고 싶을 때 인터페이스를 기반으로 한 새 클래스를 만들면 원래 코드의 수정 없이도 새 기능을 추가해 사용할 수 있습니다.

 

  • 디폴트 메서드와 정적 메서드에 대해 배웠습니다.

위의 인터페이스를 사용하는 방법이 다형성을 구현할 수 있다는 점에서 이득이 되긴 하지만 각 클래스마다 추상 메서드를 반복적으로 구현해야 하는 번거로움이 있습니다. 인터페이스 활용성을 높이기 위해 자바 8부터 제공되는 기능이 디폴트 메서드와 정적 메서드입니다.

 

디폴트 메서드는 인터페이스에서 구현된 메서드입니다. 인터페이스에서 메서드를 구현할 때 자료형 앞에 default 예약어를 붙여주면 됩니다. 이미 인터페이스에 구현되어 있기 때문에 이후 만드는 클래스에서 코드를 구현할 필요가 없습니다. 그러나 필요하다면 하위 클래스에서도  재정의할 수 있습니다.

 

정적 메서드는 인스턴스 생성과 상관없이 사용할  수 있는 메서드입니다. 메서드 자료형 앞에 static 예약어를 붙임으로서 선언할 수 있습니다.