Hayden's Archive

[자바/Java] 인터페이스(Interface) 본문

Study/Java & Kotlin

[자바/Java] 인터페이스(Interface)

_hayden 2020. 4. 19. 01:25

- 상속은 주로 클래스의 속성, 즉 필드를 공유함.

- 상속과 인터페이스를 특징적으로 공부하는 건 좋은데, 인터페이스도 일종의 상속임.
- 인터페이스(Interface) : 템플릿(Template)으로만 만들어져 있는 것. 인터페이스에는 필드가 없고 기능만 있다. 인터페이스는 클래스가 아니지만 일종의 모듈이다. 필드 없이 기능이 템플릿으로만 구성되어 있다. 클래스랑 구분하기 위해서 꺽쇠 2개를 써주기도 한다.(<< >>)
- 인터페이스의 역할 : 완벽한 템플릿만 틀로 주는 게 인터페이스.

- 메소드 템플릿(Method Template) : 구현부가 없는 추상 메소드(Abstract Method) // ex) 날아, 착륙해, 이륙해 -> 지정만 해주는 것.

- 정확히는 클래스가 인터페이스를 구현하는 것. => 상속 - extends / 구현 - implements

- implements는 점선으로 표현한다.
 - 부모(인터페이스)의 추상 메소드를 자식 클래스는 전부 다 구현해야 함. 
- 자식 클래스는 기능을 다르게 구현함.(나는 것도 새가 나는 것과 비행기가 나는 것은 다름. 인터페이스로부터 swimming이라는 숙제를 물려받은 자식클래스는 다 다르게 구현함. 인간, 고래 다 다르게 구현.)

 

 상속(키워드 extends) : 클래스와 클래스, 인터페이스와 인터페이스 사이에서 일어남(부모의 멤버가 3개면 자식의 멤버는 무조건 3개보다 더 많아야 함.) 
구현(키워드 implements) : 인터페이스와 클래스 사이에서 일어남.(부모가 가진 틀을 자식이 받아서 구현함. 개수는 상관 없음.) 
-> 공통점 : 부모 클래스와 인터페이스는 super급. 

- 부모 클래스와 인터페이스 중에 추상화가 더 심한 건 인터페이스. 완벽하게 추상화된 게 인터페이스.

- 인터페이스의 부모는 인터페이스밖에 안된다. 인터페이스는 클래스와 달리 다중 상속이 가능하다.

 
- 부모의 역할은 객체를 담아내기 위한 타입으로써 쓰게 해주는 것. -> 그러므로 인터페이스도 타입으로 쓸 수 있다.
- 다만 인터페이스는 완벽하게 추상화된 것이므로 객체 생성이 불가능하다. 



=========================

인터페이스의 역사

- 과거에 DB 관련 Vendor사가 제각각 코드가 달랐고 개발자들은 Vendor사가 바뀌면 코드를 처음부터 다시 짜야 하는 어려움이 있었음.

- 하지만 SunMicroSystems에서 중간 단계를 만들었는데 그게 바로 인터페이스.

- Java API( 주소 )에서 java.sql( 주소 )라는 템플릿을 만듦.

- java.sql에 가보면 클래스보다 인터페이스가 훨씬 많음.