본문 바로가기
개발 노트/기초 지식

[java] interface , implements

by tokkiC 2022. 5. 2.

inter 서로 + face 마주보다 = interface 연결장치


implements (변화된 것을)시행하다, 구현하다


뜻에서 알수있듯 서로 다른 클래스들에게 서로 연결을 시켜줄수있는 방법이 인터페이스이다

extends 를 통한 상속은 java 에서 단일 상속만 가능해 클래스 간 하나의 관계만을 가질수있지만

implements 를 통한 상속은 여러 interface 를 상속 가능하다 이는 interface 가 클래스가 아닌 추상적 개념이기 때문이다

abstract class 클래스명 구조의 추상적"인" "클래스"보다 더욱 추상적인 개념이므로

interface 인터페이스명 으로 써서 class 라고 쓰지도 않는다 (즉, 클래스가 아니다)

class 는 뭐다? 객체가 될 수 있는 것이다. 즉, 인터페이스는 class 로도 안쳐주니 객체로 존재할수 없다

그저 다른 클래스에서 implements 로 구현하고자 하면 가져올 수 있는 "추상적 개념" 에 불과하다

클래스가 아니므로 다중 상속도 이론상 가능하다고 한다

어느 블로그에서 클래스의 템플릿이라고 표현한 글을 보았다. 나는 여기에 가이드라인 이라고도 추가하겠다

여러명의 개발자 혹은 여러클래스가 어떤 작업을 공통적을 할때 템플릿을 제공하면

각 개발자들 혹은 각 클래스들이 가져가서 템플릿을 구현(implements)시키고 자신들의 기능과 사용에 맞게

오버라이드 override 를 통해 사용하기 위해 interface 가 존재한다

각 클래스들 사이에 서로간 부조 자식간의 상속이 없더라도 같은 interface 를 implements 하는 것으로 연관관계를

줄수있다는 점에서 연결장치 interface 라고 하는 것 같다

클래스의 템플릿인 만큼 템플릿을 사용했을때의 장점을 가지고 있다


여러명이 작업 시 제멋대로 양식으로 작업해서 추후 공동 작업물에서 문제가 되지 않도록

호환이 가능하도록 공통된 표준화를 가능하게 하며 가이드라인을 제시 받은 만큼 개발시간도 줄일수있다

서로 다른 클래스이지만 같은 인터페이스를 구현하고 있다는 연결관계를 가질수있게하고

인터페이스만 같고 각 클래스들은 서로에게 영향을 주지 않도록 독립적으로 프로그래밍 가능하다는 장점이 있다


interface 에는 다음 4가지만을 사용가능하다


상수 : 참조할 상수 값을 제공. 각 클래스에서 함부로 값을 수정하지 못하게 함

타입 상수명 = 값;

 


추상 메소드 : 기본 가이드로서 제공. 각 클래스에서 오버라이딩 하여 가공해서 사용하도록 함

타입 메소드명(매개변수, ...);


디폴트 메소드 : 완성된 기본 메소드를 제공. 각 클래스에서 오버라이딩 해서 가공하지 않으면
디폴트 메소드를 그대로 사용하도록 함.
이미 완성된 프로그램에 새 메소드를 추가하려 할 때,
추상메소드의 경우 모든 클래스중 하나라도 그 메소드를 가져가 오버라이딩 하지 않으면 에러가 나지만
디폴트 메소드의 경우 클래스들이 새 메소드를 추가와 동시에 모두 오버라이딩 하지 않더라도
디폴트 값을 제공하여 에러가 나지 않는다. 각 클래스들은 디폴트 메소드를 사용할수도 있고
입맛에 맞게 오버라이딩을 할수도 있도록 선택권을 가지는 점도 장점

defalut 타입 메소드명 (매개변수, ...) {구현부};


정적 메소드 : 각 클래스들이 수정 할수없는 공통 메소드를 제공. 각 클래스들에서 반드시 사용하도록 함

static 타입 메소드명 (매개변수, ...) {구현부};

 

치즈덕 에잇!

 

댓글