09_2_자바 인터페이스 정리

안녕하세요 Mr_ChooC(coding)AI 입니다~ 

인터페이스

1.     정의

2.     문법

3.     실습

4.     인터페이스 다중 상속

5.     실습

앞으로 계속 class를 더 잘 활용할 수 있는 방법에 대해서 계속 알아가 보도록 하겠습니다. 전에 포스트에서는 추상클래스에 대해서 다루었고 이번에는 인터페이스에 대해서 다루어 보도록 하겠습니다. 실습코드는 하기 github을 참조해 주세요!

Github: https://github.com/Chooyoungjun/javastudy/tree/main/09_interface

 

인터페이스

1.     정의

인터페이스(interface)?

Inter(사이의) + face(마주하다)의 합성어로 물체들 사이에서 상호작용 할 수 있도록 하는 매개 역할이라고 말 할 수 있습니다.

클래스와 무슨 차이가 있냐라고 생각 할 수도 있지만 클래스는 설계도라고 비유 할 수 있고, 인터페이스는 다른 클래스들이 상속 받아서 설계도를 만들 수 있도록 도와 주는 규격이라고 말 할 수도 있습니다.

2.     문법

[인터페이스 멤버의 구성]

상수: final 타입 변수면 = ;

추상 메서드: abstract 리턴 타입 메서드 명();

[인터페이스 구현 방법]

Interface 인터페이스 명{

            필드

};

[예시]


위의 snapshot과 같이 정리하면 사용 할 수 있습니다. 위에서 볼 수 있듯이 다양한 특징이 있습니다. 일단 final이 생략 가능 하며 abstract도 생략이 가능 하다는 특징이 있습니다.

[클래스로 인터페이스 구현 방법]

Interface 인터페이스 명{

            필드

};

Class 클래스명 implements 인터페이스명{

            추상 메서드 구현

}

위의 구조와 같이 implements를 활용해서 인터페이스를 붙이면 활용이 가능 합니다. 이러한 점을 숙지하고 아래에 실습을 진행해 보도록 하겠습니다.

[실습]

Interface를 구현하고 그러한 interface를 상속 받아 보도록 하겠습니다.



위에서 예시에서 사용한 대로 구현을 해보았습니다. 이제 이렇게 구현한 interface implements를 활용해서 클래스를 정의를 하고 main클래스에서 불러와 보도록 하겠습니다.


위의 실습과 같이 불러와 지는 것을 알 수 있습니다. 그리고 또 주목해야 할 점은 interface에서 구현된 변수는 final을 생략 하거나 정의하고 있기 때문에 변수의 값을 바꿀 수가 없다는 점을 꼭 숙지 하셔야 합니다. 지금까지 interface의 활용에 대해서 배웠습니다. 이제아래에서는 interface의 다중 상속에 대해서 알아보도록 하겠습니다.

3.     인터페이스 다중 상속

지금까지는 인터페이스를 하나만 상속하는 것에 대해서만 배웠습니다. 하지만 인터페이스의 가장 큰 특징은 다중 상속에 있습니다. 그래서 다중 상속 구현방법 설명과 실습을 진행하여 다중 상속에 대해서 이해해 보도록 하겠습니다.

[클래스로 다중 인터페이스 구현 방법]

Interface 인터페이스 명(1~3){

            필드

};[이렇게 3개 정도 만드시면 됩니다.

Class 클래스명 implements 인터페이스명1, 인터페이스명2, 인터페이스명3{

            추상 메서드 구현

}

위와 같이 구현하면 다중상속이 가능 하게 됩니다. 인터페이스의 정의는 위에서 배운 것과 같이 정의를 하시면 됩니다. 그리고 여러 개의 인터페이스를 상속 받기 위해서는 implements 뒤에 콤마(,)를 활용해서 붙여 넣으면 됩니다. 이렇게 간단하게 구조에 대해서 설명 드렸습니다. 잘 이해 안 될 수 있을 수도 있으니 실습도 진행해 보도록 하겠습니다.

[실습 코드]

실습을 위해서 여러가지 어플을 interface를 활용해서 만들어 보도록 하겠습니다. 핸드폰이 가지고 있는 기능(camera, call, memo, write, clock)이 있는데 이러한 기능을 다 가지고있는 헨드폰을 정의해 보도록 하겠습니다.


이렇게 위와 같이 interface를 정의하고 implements를 활용해서 모든 기능을 상속 받는 MyCellPhone을 정의 하였습니다. 이렇게 정의한 클래스를 어떻게 활용할 것인지에 대해서 확인해 보도록 하겠습니다.


위의 main 메서드에서 일반 객체 생성방법을 사용할 수도 있습니다. 그리고 upcasting을 활용한 방법을 사용 할 수도 있습니다. Interface를 직접적으로 객체화 할 수 없지만 Upcasting을 활용해서 객체화 할 수 있는 것을 알 수 있습니다. 이렇게 인터페이스의 가장 큰 장점인 다중 상속에 대해서 알아 보았습니다.

 

지금까지 인터페이스에 대해서 알아 보았습니다. 다음 포스트에서는 내부클래스에 대해서 정리해 보도록 하겠습니다. 긴 글 읽어 주셔서 감사합니다.!

 

Comments