본문 바로가기
[ JAVA ]/JAVA

[ Java ] Interface 2

by 환이s 2022. 12. 21.
728x90

이전 포스팅에 이어서 interface 포스팅 시작 하겠습니다!! 

 

Interface는 다중 상속이 가능합니다. implements 키워드를 통해서 상속을 할 수 있는데, 그러면 extends와 차이점이 뭐지??라는 생각을 할 수 있다. 

 

4 ) extends Vs implements

 

- extends

상속을 뜻합니다. 사전적 의미로는 확장, 확대의 뜻을 가지고 있습니다.

코딩으로 치면 조상의 멤버(메서드,변수 등)를 자식에서 그대로 물려받아 추가적으로 자식의 멤버를 추가, 즉 조상의 멤버를 물려받고 자식에게 추가로 확장하여 사용하는 의미로 보면 적당할 것 같습니다.

 

간단하게 예시로 보자면

클래스끼리는 하나의 클래스만 상속이 됩니다.

 

 

하지만 인터페이스끼리는 다중 상속이 가능합니다. 여러 개의 인터페이스를 상속받은 인터페이스를 클래스에 적용할 땐 모든 메서드를 구현해 줘야 합니다.

 

- implements

사전적 의미로 도구, 이행하다란 뜻을 가지고 있습니다.

확장의 이미보단 인터페이스에 정의된 멤버들을 클래스에서 대신 구현을 하겠다는 의미로 적당할 것 같습니다.

implements는 여러 개의 인터페이스를 받아 메서드를 구현할 수 있습니다.

 

ex 1 ) Interface 상속

 

사칙연산을 하는 4개의 interface를 만들고,
이들 모두를 상속한 Calc interface를 만든 후,
구현체(CalcImpl)에서 각각을 구현하시오.
- interface: Add, Sub, Mul, Div, Calc
- method: add(), sub(), mul(), div()

 

 

이전 포스팅에서는 interface 구현체에 (add(), sub(), mul(), div()) 코드를 작성 했는데, 이번에는 각각 interface를 만들어서

CalcImpl에 구현을 합니다.

 

사칙연산에 필요한 interface를 만들었는데 저는 조금 더 편리성을 생각해서 Calc이라는 interface에 먼저 구현을 하면, 구현체에 편하게 override를 할 수 있습니다.

 

 

CalcImpl 클래스를 만들고 implements를 하면 에러 표시 나오는 거 보이실 겁니다. 즉 구현하라는 뜻입니다.

 

 

구현을 하면 위 사진과 같이 에러가 사라집니다. 그리고 main에 표출하고 결과는 아래와 같습니다.

 

위에서 보다시피 코드가 좀 더 간결하고 깔끔해 질 수 있습니다.

 

5 ) Interface의 구현과 상속 함께쓰기

 

이외에 상속과 구현을 동시에 할 수도 있습니다. extends 키워드를 이용해 클래스 하나와 implements로 인터페이스를 하나 이상 추가하는 것이죠.

 

 

보다시피 구현과 상속을 같이 사용함으로써 아래의 결과를 표출할 수 있습니다.

 


마치며

 

지금까지 인터페이스는 무엇이고, 또 어떻게 사용하는지에 대해서 알아봤습니다...!!

하지만 여전히 인터페이스는 왜 사용해야 하는지에 대해서 의문이 들 수 있는데,

인터페이스를 구현하고, 상속하고, 확장하면서 얻을 수 있는 프로그래밍의 장점을 다형성과 사용하면서,

유지보수에 있어서 기존의 코드를 변경 없이 해당 구현 객체를 변경하기만 해도 호출되는 소스의 내용을 바꿔줄 수 있습니다.

거기다 코딩을 좀 더 간결하고 깔끔해질 수 있기 때문에 실무에서는 개발 시간을 단축시킬 수 있습니다.

 

728x90

'[ JAVA ] > JAVA' 카테고리의 다른 글

[ Java ] JDK 기본 클래스 2  (0) 2022.12.25
[ Java ] JDK 기본 클래스 1  (0) 2022.12.22
[ Java ] Interface 1  (0) 2022.12.19
[ Java ] 추상 클래스  (0) 2022.12.15
[ Java ] 상속과 다형성  (0) 2022.12.14