< 인터페이스 (Interface) >
- 상수필드와 추상메소드만으로 이루어진 추상클래스의 변형체
- 인터페이스는 무조건!! 상수필드와 추상메소드로 구성됨
- 다중상속을 허용함 (메소드가 겹치더라도 구현부분은 실제 구현클래스에서 기술하기 때문에)
- 인터페이스를 구현하는 클래스는 해당 인터페이스의 추상메소드를 모두 구현해야 함 => 오버라이딩
- 추상클래스보다 좀 더 강한 규칙성, 강제성을 가짐
- 인터페이스 내의 접근제한자, 예약어 생략 가능 : 무조건 상수필드와 추상메소드로 생성됨
(필드 : public static final 생략, 메소드 : public abstract 생략)
[ 표현법 ]
접근제한자 interface 인터페이스 이름 {
상수필드
추상메소드
}
< 추상클래스 VS 인터페이스 >
공통점 | 객체 생성 불가능. 참조변수로 사용 가능 => 다형성 적용 가능 상속받는 클래스에서 추상메소드를 오버라이딩하도록 강제함 |
||
차이점 | 클래스 멤버 | 존재 목적 | |
추상클래스 | 일반필드, 일반메소드 생성 가능 (추상메소드 생략 가능 - abstract로 정의) |
추상클래스를 상속받아서 필드, 메소드를 이용하고 클래스를 확장하기 위한 용도 | |
인터페이스 | 상수필드, 추상메소드만 생성 가능 | 클래스기능(메소드) 구현을 강제하기 위한 용도 |
< extends 와 implements >
- 클래스간의 상속관계 : 자식클래스 extends 부모클래스
- 클래스와 인터페이스의 구현관계 : 클래스 implements 인터페이스
클래스 implements 인터페이스1, 인터페이스2 (, 로 구분하여 다중상속 가능)
'개발 > Java' 카테고리의 다른 글
[Java] 자바 - 파일 생성 ( File클래스 ) (1) | 2022.09.21 |
---|---|
[Java] 자바 - 에러, 예외(Exception) / 예외처리구문 ( try ~ catch문 ) / throws (수정) (1) | 2022.09.20 |
[Java] 자바 - 추상 메소드 / 추상 클래스 ( 예약어 abstract ) (0) | 2022.09.20 |
[Java] 자바 - 다형성(Polymorphism) / 업캐스팅(Upcasting) / 다운캐스팅(Downcasting) / 동적바인딩 / instanceof 연산자 (0) | 2022.09.19 |
[Java] 자바 - 상속(Inheritance) / super / 오버라이딩(Overrding) (0) | 2022.09.18 |