Java 인터페이스와 implements
요약
Java 인터페이스(interface)의 개념과 implements 키워드 사용법을 알아봅니다. 정보처리기사 실기에 출제된 인터페이스 문제를 풀기 위한 핵심 개념을 정리합니다.
인터페이스 핵심 정리
| 개념 | 설명 | 예시 |
|---|---|---|
| 인터페이스 (interface) | "이런 기능을 만들어라"라는 약속(규칙) | interface Person { } |
| implements | 인터페이스를 구현(약속을 지키겠다고 선언) | class A implements Person { } |
| 추상 메서드 | 인터페이스 안에 선언만 된 메서드 (본문 없음) | void sayHello(); |
| 다형성 | 같은 메서드 호출이 객체에 따라 다르게 동작하는 성질 | Person p = new A(); |
인터페이스란? 쌩기초
인터페이스(interface) 는 클래스가 반드시 구현해야 할 메서드의 목록을 정의하는 것입니다.
쉽게 말하면, "이 기능들을 반드시 만들어야 해" 라는 약속(계약) 입니다.
위 코드에서 Person 인터페이스는 sayHello()라는 메서드를 선언하고 있습니다. 하지만 메서드의 본문(구체적인 동작) 은 없습니다. 본문은 이 인터페이스를 구현하는 클래스에서 작성합니다.
implements 키워드 기초
클래스가 인터페이스를 구현할 때 implements 키워드를 사용합니다.
핵심 규칙
- 인터페이스를 구현하는 클래스는
implements를 사용합니다 - 인터페이스에 선언된 모든 메서드를 반드시 구현해야 합니다
- 구현할 때 메서드 앞에 public 을 붙여야 합니다
인터페이스는 "외부에 공개하는 약속"이므로, 어떤 패키지의 클래스든 이 약속을 구현할 수 있어야 합니다. 그래서 인터페이스의 메서드는 public을 생략해도 자동으로 public입니다. Java는 메서드를 구현할 때 원래보다 접근 범위를 좁힐 수 없으므로, 구현 클래스에서도 public을 명시해야 합니다. 생략하면 default 접근 제어자(같은 패키지에서만 접근 가능)가 적용되어 public보다 좁아지므로 컴파일 에러가 발생합니다.
extends vs implements 비교
| 키워드 | 사용 대상 | 의미 | 예시 |
|---|---|---|---|
| extends | 클래스 -> 클래스 | 상속 (부모 기능을 물려받음) | class Child extends Parent |
| implements | 클래스 -> 인터페이스 | 구현 (약속한 기능을 만듦) | class A implements Person |
다형성 기초
다형성(Polymorphism) 은 그리스어 poly(여러) + morph(형태), 즉 "여러 형태" 라는 뜻입니다. 프로그래밍에서는 같은 메서드 호출이 객체에 따라 다르게 동작하는 성질을 말합니다.
Java에서는 인터페이스 타입의 변수에 구현 클래스의 객체를 담아 다형성을 구현합니다.
같은 Person 타입이지만, 실제로 어떤 클래스의 객체를 담았느냐에 따라 sayHello()의 동작이 달라집니다. 이것이 다형성 입니다.
인터페이스 여러 개 구현 심화
Java에서 클래스는 인터페이스를 여러 개 구현할 수 있습니다. 쉼표(,)로 구분합니다.