추상 메소드와 상수만 들어있는 기본 설계도
인터페이스의 모든 필드는 public static final 이어야 한다.
모든 메소드는 public abstract 이어야 하고 생략 가능하며 생략한다면
컴파일러가 자동으로 붙여준다.
접근제어자 interface 인터페이스이름 {
public static final 타입 상수이름 = 값; // 반드시 초기화 해야한다.
// 상수의 네이밍은 모두 대문자로 구성되고 구분자는 "_"(언더바)로 표한한다.
public static final String FIRST_NAME = "Ryan";
...
public abstract 메소드이름(매개변수목록);
...
}
클래스가 인터페이스로부터 메소드를 물려받아 실행구문을 붙여 재정의하는 행위
자신이 직접 인스턴스를 생성할 수 없고, 구현해 줄 클래스를 작성해야한다.
또한 클래스가 모든 추상메소드를 구현하지 않는다면, abstract 키워드를 사용하여
추상 클래스로 선언해야한다.
class 클래스이름 implements 인터페이스이름 { ... }
인터페이스가 다른 인터페이스에게 멤버변수와 메소드를 물려주는 행위
인터페이스는 인터페이스로부터만 상속을 받을 수 있으며,
여러 인터페이스를 상속받을 수 있다.
클래스는 다중상속이 안되나요?
클래스를 이용하여 다중상속을할때 메소드의 이름이 겹칠경우 출처의 모호성 등의
문제가 발생 할 수 있어 자바에서는 클래스를 통한 다중 상속은 지원하지 않는다.
class 클래스이름 extend 상위클래스이름 implements 인터페이스이름 { ... }
클래스 입장에서 변수명이 겹치는경우 누구의 것인지 알 수 없기 때문에
앞에 누구의 것인지 명시해줘야한다. 인터페이스명.변수명
대규모 프로젝트 개발 시 일관되고 정형화된 개발을 위한 표준화가 가능
클래스의 작성과 인터페이스의 구현을 동시에 진행할 수 있으므로,
개발 시간을 단축할 수 있다.
클래스와 클래스 간의 관계를 인터페이스로 연결하면,
클래스마다 독립적인 프로그래밍이 가능
프로젝트 전체의 메소드 호출 규격을 만들어 유지 보수성을 높일 수 있다.