-
interface란프로그래밍 기초 공부 2022. 9. 12. 23:55
두번째로 포스팅 하게 될 내용은 interface에 대한 내용입니다.
[ interface란? ]
협업자들과의 약속,명세 와 같은 것
ex) USB
- USB의 내부 파일의 내용이 바뀌어도 USB 자체 모양이 바뀌지 않으면 USB포트에 연결하는 것은 영향을 받지 않는다.
ex) 운전자 - 프레임 - 자동차
- 디젤 및 전기차등 자동차 내부적으로는 바뀌어도 자동차의 프레임, 동작 방법이 바뀌지 않으면 운전자는 영향을 받지 않는다.
선언(설계)와 구현의 분리
- 껍데기와 알맹이가 같이 붙어있던 형태를 인터페이스를 사용하여 인터페이스 , 클래스로 분리합니다.
- 분리하지 않으면 유연하지 않고 변경에 있어 불리하지만 분리가 되어있으면 클래스를 다른것으로 바꾸기가 쉽습니다.
[ java에서의 interface ]
자바는 하나의 상속만 가능하다는 특성이 있습니다.
이는 객체지향 프로그래밍에서 큰 제약이기 때문에 인터페이스라는 개념이 나오게 된 것입니다.
인터페이스는 일종의 추상 클래스로 볼 수 있는데
추상클래스처럼 추상메서드를 갖지만 추상클래스보다 추상화 정도가 높아서
추상 클래스와 달리 일반 메서드 또는 멤버변수를 가질 수 없고, 오직 추상메서드와 상수만 멤버로 가질 수 있습니다.
개발 코드가 인터페이스의 메서드를 호출하면 인터페이스는 객체의 메서드를 호출합니다.
이렇게 되면 개발코드는 객체의 내부 구조를 알 필요가 없고,
인터페이스의 메서드만 알면 된다는 장점이 있어서 사용을 합니다.
- 변경에 유리함 : 개발 코드를 수정하지 않고, 사용하는 객체를 변경할 수 있도록 하기 위해 인터페이스를 사용한다.
- 인터페이스는 하나의 객체가 아니라, 여러 객체들과 사용이 가능함. 어떤 구현 객체를 사용하느냐에 따라 실행 내용과 리턴값이 다를 수 있어서 코드 변경없이 실행 내용과 리턴값을 다양화 할 수 있다는 장점을 가짐
- 표준화가 가능함
- 서로 관계없는 class들을 서로 묶어줄 수 있음
- 설계와 구현을 분리할 수 있음
추상클래스와 인터페이스의 차이
추상클래스 인터페이스 생성자, 인스턴스 변수 등을 멤버로 가질 수 있음. 추상 메서드만으로 이루어진 집합임. 인터페이스 상속
자바는 클래스의 다중상속이 안됩니다.
그 이유는 부모들의 메서드가 자손에서 충돌나는 문제를 방지하기 위해서인데
인터페이스에 존재하는 추상 메서드는 선언부만 존재하기 때문에 충돌날 가능성이 없습니다.
따라서 다중상속이 가능하게 됩니다.
인터페이스 구현
인터페이스는 추상메서드의 집합으로 미완성된 설계도라고 생각하면 되고
이를 완성 시키는 것이 인터페이스의 구현(implements)입니다.
- 개발 코드가 인터페이스 메서드를 호출하면 인터페이스는 구현객체의 메서드를 호출함
- 인터페이스를 구현하기 위해서는 정의된 모든 추상메서드를 구현해야 함
- 일부 추상 메서드만 구현할 경우 해당 클래스는 abstract class가 됨
인터페이스의 모든 메서드는 public접근제어자를 가지게 됩니다.
구현 클래스에서 오버라이딩할 때 오버라이딩 메서드의 접근제어자 조상보다 좁아서는 안되고,
구현 클래스가 작성되면 new 연산자로 객체를 생성할 수 있고,인터페이스로 구현 객체를 사용하려면 인터페이스 변수를 선언하고 구현 객체를 대입해야합니다.
다중 인터페이스 구현 클래스
객체는 다수의 인터페이스 타입으로 사용할 수 있는데
다중 인터페이스 구현 시, 구현 클래스는 모든 인터페이스의 추상 메서드에 대해 실체 메서드를 작성해야 합니다.
인터페이스도 다른 인터페이스를 상속받을 수 있습니다.
extends키워드를 사용하여 상속받을 수 있고, 클래스와 다르게 다중 상속이 가능합니다.그런데 인터페이스 상속 시 주의할 점이 있습니다.
하위 인터페이스를 구현하는 클래스는 하위 인터페이스의 메서드 뿐만 아니라
상위 인터페이스의 모든 추상 메서드들을 구현해야하고
모든 추상 메서드들을 구현해야 구현 클래스로부터 객체를 생성하고 나서
하위 및 상위 인터페이스 타입으로 형변환이 가능합니다.
하위 인터페이스로 형변환이 되면 상, 하위 인터페이스에 선언된 모든 메서드들을 사용할 수 있고,
상위 인터페이스로 형변환 시 하위 인터페이스의 메서드는 사용이 불가능 합니다.
[ interface 예시 ]
자바에서의 interface이외에도 API, UI, GUI 등등 여러가지 인터페이스가 존재한다.
'프로그래밍 기초 공부' 카테고리의 다른 글
HTTP란? (2) 2022.09.23 API와 REST API (0) 2022.09.19 JSON과 XML (0) 2022.09.19 객체 지향 프로그래밍(OOP)이란 무엇일까? (0) 2022.09.16 git과 git workflow (0) 2022.09.12