본문 바로가기

개발/Java

[Java] 자바 - 인터페이스 ( 예약어 implements )

 

< 인터페이스 (Interface) >

 

- 상수필드추상메소드만으로 이루어진 추상클래스의 변형체

- 인터페이스는 무조건!! 상수필드와 추상메소드로 구성됨

- 다중상속을 허용함 (메소드가 겹치더라도 구현부분은 실제 구현클래스에서 기술하기 때문에)

- 인터페이스를 구현하는 클래스는 해당 인터페이스의 추상메소드를 모두 구현해야 함 => 오버라이딩 

- 추상클래스보다 좀 더 강한 규칙성, 강제성을 가짐

- 인터페이스 내의 접근제한자, 예약어 생략 가능 : 무조건 상수필드와 추상메소드로 생성됨

   (필드 : public static final 생략, 메소드 : public abstract 생략)

 

[ 표현법 ]

접근제한자 interface 인터페이스 이름 {

         상수필드

         추상메소드

}

 

 

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

 

공통점 객체 생성 불가능. 참조변수로 사용 가능 => 다형성 적용 가능
상속받는 클래스에서 추상메소드를 오버라이딩하도록 강제함
차이점   클래스 멤버 존재 목적
추상클래스 일반필드, 일반메소드 생성 가능
(추상메소드 생략 가능 - abstract로 정의)

추상클래스를 상속받아서 필드, 메소드를 이용하고 클래스를 확장하기 위한 용도
인터페이스 상수필드, 추상메소드만 생성 가능 클래스기능(메소드) 구현을 강제하기 위한 용도

 

 

< extends 와 implements >

 

- 클래스간의 상속관계 : 자식클래스 extends 부모클래스

- 클래스와 인터페이스의 구현관계 : 클래스 implements 인터페이스

                                                          클래스 implements 인터페이스1, 인터페이스2 (, 로 구분하여 다중상속 가능)