IT & Marketing/SQL, JAVA

[JAVA] 인터페이스 기본 개념

사용자 Nature_^^ 2019. 8. 24. 13:06
728x90

안녕하세요 

오늘은 인터페이스 기본 개념을 정리해 보아요~ 

 

 

 

◆인터페이스란?

 

키워드로 interface 를 사용하는 이 아이는, 추상 메소드상수만을 멤버로 가질 수 있는 일종의 추상클래스에요. 

추상클래스가 뭐냐구요? 여기서 확인해보세요 :) https://devfairy.tistory.com/6

 

추상클래스는 클래스 내에 추상메소드가 1개라도 있으면 추상 클래스라고 해서

추상메소드 외에 멤버변수라든지 일반 메소드들도 갖을 수 있어요

 

그런데 인터페이스는 딱! only! 추상메소드상수만 멤버로 가질 수 있어요


추상클래스처럼 인터페이스도 완성되지 않은 클래스이기 때문에

다른 클래스에서 구현해야 사용할 수 있어요

 

 

 

인터페이스 장점

 

- 선언부만 알면 상속받아서 코딩할 수 있고, 

  형태 변형을 방지하는것이 보장 되기 때문에

  공동작업시 안전하게 코딩이 가능해요 

  동시 개발 진행이 가능하기때문에 개발 시간도 단축되구요.

  대규모 프로젝트할때 인터페이스를 많이 사용하죠

 

 

- 기본 껍데기를 정의해서 박아놓고 갖다 쓰는 것이라

  표준화가 가능해요

 

- 서로 관계없는 클래스들이 공통적 특성을 갖고 있을 경우,

  그 특성을 인터페이스로 만들어 공통적으로 구현하게 해서 관계를 나타내게 할 수 있어요

  (아래 cat, dog 예문 참고)

 

클래스를 여기저기 상속받고 상속해주고 하는 얽히고 섥힌 관계일때

  한 클래스에서 조금의 수정이 일어난 경우.....   머리가 많이 아플 수 있어요. ㅎ 

  상속관계에 있는 클래스들 전부 수정해줘야 되니까 ;;;;   

  그런데,  인터페이스를 이용하면 선언과 구현을 분리할 수 있기 때문에

  한 클래스의 변경이 다른 클래스의 변경에 영향을 미치지 않도록 해서 독립적인 프로그래밍이 가능해요

  

  

 

 

★인터페이스  <->  인터페이스 

인터페이스 끼리 상속가능  extends 하는 관계

 

 

 

인터페이스  <->  클래스

인터페이스를 클래스가 상속 받고,

상속 받은 것을 구현해야되는거니까 implements 하는 관계

 

 

 

※ java 7 까지는 인터페이스는 상수와 추상 메소드로만 구성

   java 8 부터는 default 메소드 추가 됨

   여전히 인터페이스에는 필드(멤버변수) 선언 불가

 

 

 

 

자 그럼 인터페이스를 사용해 봅시당 :-) 

 

 

실행결과>

 

 

 

---------------------------------------

 

 

 

어엇- 왜 오류가 났지 ;-; 

 

인터페이스를 구현하는 클래스에서

추상메소드 앞에 public을 안써주면 오류가 나는데 왜지...?

 

-> 접근제어자를 아무것도 안써주면 자동으로 접근제어자가 default 가 되는데

     public 보다 default 가 접근 범위가 더 좁기 때문에 오류가 나는 것!

 

그래서 꼭 추상메소드 구현해줄 땐 접근제어자로 public 써주기 '0'

 

 

오류해결 '-'

 

 

 

 

-------------------------------------

 

 

인터페이스를 여러개 받아서 다중 구현 하는 것도 가능 하군요 ^0^

 

 

 

실행결과>

 

 

-------------------------------------

 

 

 

인터페이스와 클래스를 동시에 상속 받아서 구현할 수도 있네요!  오올~~~ ♬

 

 

실행결과>