정의
- 일종의 추상클래스지만 추상클래스보다 추상화 정도가 높아서 오직 추상메서드와 상수만 멤버로 가질 수 있다.
특징
- 추상클래스가 미완성 설계도라면 인터페이스는 틀외에는 아무것도 없는 기본 설계도로 다른 클래스 작성에 도움을 줄 목적으로 작성된다.
- 모든 멤버변수는 public static final이어야하고 메서드는 public abstract 메서드여야 하지만 생략가능하다.(컴파일러가 자동으로 추가해줌)
- JDK1.8부터는 static메서드와 default메소드를 추가할 수 있다
상속
- 인터페이스끼리 상속을 받거나 상속할 수 있으며 다중상속이 가능하다.
(인터페이스는 object같은 최고 조상이 없다)구현
- 해당 인터페이스를 구현할 클래스에서 인터페이스의 메소드를 완성해주어야 한다
(class (클래스명) implements (인터페이스명)장점
- 개발시간을 단축시킬 수 있다.
- 표준화가 가능하다.
- 관계없는 클래스들에게 관계를 맺어 줄 수 있음
- 독립적인 프로그래밍이 가능
interface Movable{ void move(int x, int y);} interface Attackable{ void attack(Unit u);}; interface Fightable extends Movable, Attackable{ } //인터페이스끼리의 다중상속 class Unit{ int hp=100, x=0, y=0; } //클래스의 인터페이스 메소드 일부 구현 ( 추상 클래스 선언 필요 ) abstract class Moving_Unit extends Unit implements Fightable{ public void move(int x, int y){ super.x = x; super.y = y; } } //클래스의 인터페이스 메소드 모두 구현 class Attacking_Unit extends Unit implements Fightable { public void move(int x, int y){ super.x = x; super.y = y; } public void attack(Unit u){ u.hp = 0; } }