[JAVA] 인터페이스(interface)
JAVA 인터페이스(interface)
모든 멤머변수는 public static final이어야 하며 이를 생략할 수 있다.
모든 메서드는 public abstract이어야 하며 이를 생략할 수 있다.
인터페이스는 public으로 정의해야하며 멤버도 반드시 public이다.
*** 인터페이스에 선언된 모든 메소드는 public이다
인터페이스에 선언된 모든 변수는 public이다(상수 final)
=> 변수 (추상클래스:멤버변수 , 인터페이스 : 상수형변수)
인터페이스 내부에 상수용 변수 선언이 가능하다. 그리고 그변수는 그냥 작성하여도 static final로
자동선언된다.
상속 (인터페이스는 인터페이스로부터만 상속받을 수 있다.)
인터페이스 ==> 인터페이스
(extends)
인터페이스 ==> 클래스
(implements)
클래스 ==> 인터페이스
(error)
인터페이스는 클래스를 상속받을 수 없다.
인터페이스를 최종적으로 구현하는것은 마지막으로 상속받는 class 내부에서 구현해야한다.
여러개 클래스를 묶어서 인터페이스로 관리(서로 다른 클래스들에게 관계를 맺어준다)
추상클래스의 일종(추상클래스 단점을 보완)
미완성된 클래스이므로 자신이 메모리 할당을 할 수 없다 (구현한 클래스를 통해서 메모리 할당가능)
추상 메서드는 abstract로만 선언가능 (자바 8에서는 default키워드를 이용해서 일반 메소드 구현이 가능해졌다.)
================================
interface A
interface B
class C implements A,B ==> 다중상속
=================================
추상클래스와 인터페이스 공통점과 차이점
공통점
1. 추상클래스와 인터페이스는 독자적으로 인스턴스화 하는 것은 불가능하며 상속을 통해서만 가능하다.
2. 구현부가 있는 메소드와 없는 메소드 모두 가질 수 있다는 점
차이점
1.인터페이스에서 모든 변수는 기본적으로 public static final 이며, 모든 메소드는 public abstract인 반면에 추상클래스에서는 static이나 final이 아닌 필드를 지정할 수 있고 public, protected, private 메소드를 가질 수 있다.
2. 인터페이스를 구현하는 어떤 클래스는 다른 여러개의 인터페이스들을 다중상속받아 구현할 수 있다. 반면에 추상클래스는 상속을 통해 구현되지만 자바에서 다중상속을 지원하지 않으므로 추상클래스를 상속받은 서브클래스는 추가적인 상속을 받을 수 없다.
댓글
댓글 쓰기