본문 바로가기
dev/JAVA

[JAVA] 인터페이스

by dev_Step 2022. 5. 31.

 

인터페이스란 ? : 추상 메서드의 집합, 구현된 것이 전혀 없는 설계도, 껍데기(모든 멤버가 public)

 

추상클래스 <----> 인터페이스

차이점. 

일반 클래스인데 추상메서드를 가지고 있는 클래스

인터페이스는 구현된게 없는 추상메서드의 집합이다.

iv (인스턴스 변수)를 가질 수 없다.

인터페이스에서는 상수와, 추상메서드를 가질수 있다.

이때 상수는 모두 public static final 이 붙으며, 생략이 가능하다

또한 추상메서드도, public abstract 가 항상 붙으며, 생략이 가능하다.

JAVA 8이후로 인터페이스에서 default 메서드와, static 메서드도 생성할 수 있다.

 

Interface의 상속:

 >> 인터페이스의 조상은 인터페이스만 가능(Object가 최고 조상이 아니다)

 >> 다중상속이 가능하다(추상 메서드는 충돌해도 상관없음-내용부가 없으니 충돌 문제가 없음..) 

   ex) interface Fightable extends Movable, Attackable    (OK) 

 >> 클래스는 다중 상속이 안된다.

   이유) 선언부가 같고 내용이 {} 다르면 어느쪽을 상속 받을지 결정 할 수 없다.(충돌 발생)

 

인터페이스의 구현 (미완성 설계도)

 >> 인터페이스에 정의된 추상 메서드를 완성하는 것

 >> 상속을 통해서 추상메서드를 완성해서 사용해야함   (( 키워드 implements ))

 >> Func 클래스는 MyFunction인터페이스를 구현 했다.

현재 Func 클래스가 MyFunction 인터페이스의 추상 메서드중 1개만 구현 하고 나머지

1개를 구현하지 않았으므로  Func은 추상 클래스가 된다.

현재 써있지는 않지만 

public abstract int min(int a, int b) 가 생략되어 있다.  해당 매서드 까지 구현하면 

 

정상적인 class로 표현된다.