인터페이스
인터페이스란 ?
인터페이스는 일종의 추상클래스이며, 추상메소드와 상수만을 멤버로 가짐
인터페이스 작성
interface 인터페이스이름 {
public static final 타입 상수이름 = 값;
public abstract 메소드이름;
}
Java
복사
인터페이스 사용이유
자바에서는 다중상속이 불가능!
•
인터페이스를 통해 다른 클래스의 기본 틀이 됨
•
간접적으로 다중상속 지원가능!
•
대규모 프로젝트에서 개발을 위한 표준화가 가능!
특징
•
인스턴스를 생성할 수 없음.
•
메서드의 몸체가 없다(추상 함수만 가질 수 있다)
•
메서드들을 구현하도록 강제.
•
인터페이스에는 상수와 추상 함수가 올 수 있음
인터페이스
변수
인터페이스 안에 변수를 선언하면
객체를 생성하지 않고 바로 사용가능하다. (like. static 변수)
interface Interface {
double PI = 3.141592;
}
Java
복사
그 이유는 인터페이스 내의 변수는 public static final 가 생략되었기 때문이다.
final, 즉 상수로 선언되었기 때문에 값 변경도 불가능하다.
interface Interface {
public static final double PI = 3.141592;
}
Java
복사
메서드
인터페이스 메서드도 마찬가지로 생략된 부분이 있다.
이렇게 리턴 타입과 메서드명만 입력해도
interface Interface {
void hi();
}
Java
복사
public abstrat가 포함되어있는 것과 동일하다.
interface Interface {
public abstract void hi();
}
Java
복사
클래스 상속 & 인터페이스 구현
클래스 상속
•
구현을 강제하지 않음
•
큰 분류, 소속과 같은 개념으로 사용
•
속성, 메소드를 그대로 가져와 사용할때 권장
인터페이스 구현
•
구현을 강제함.
•
필요한 기능들을 추가로 달아주는 개념으로 사용
활용 예시
인터페이스 vs 추상클래스
default 메소드
default 메소드란?
추상 메소드의 기본적인 구현을 제공하는 메소드로, 추상 메소드가 아니기 때문에 디폴트 메소드가 새로 추가되어도 해당 인터페이스를 구현한 클래스를 변경하지 않아도 됨
default 메소드 선언
interface OriginalInterface {
void method();
default void newMethod(){
}
}
Java
복사
default 메서드는 왜 등장했을까?
"하위 호환성"때문.
인터페이스를 배포하여 여러 사람이 이미 사용 중이라고 가정.
인터페이스에 메서드를 추가 혹은 변경한다면?
인터페이스를 사용하는 사람들이 변경사항에 대처하지 않으면 오류가 발생함.
이때, 변경사항을 default 메서드로 구현하면 위 문제에 대비할 수 있음.
새로 알게 된 점.
황민우 - 인터페이스에서 변수와 메서드 작성 시 생략되는 부분을 새로 알게 됨. 특히 변수 선언 시 static final 이 생략된다는 점이 흥미로웠음.
백승근 - 인터페이스와 default 메소드의 정확한 사용이유 !