일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 개발자
- 배열
- 변수
- node.js
- 보조 스트림
- 코딩
- 다형성
- 문자 단위 스트림
- 초보개발자
- try-catch
- 졸리다
- 예외 처리
- exception
- ArrayList
- 자료형
- SSR
- 파이팅
- 바이트 단위 스트림
- 인스턴스
- Java
- 상속
- MPA
- throws
- 코린이
- 새벽공부
- FileInputStream
- 메서드
- 자바
- 백엔드
- 인터페이스
- Today
- Total
SHUSTORY
10-1 인터페이스 본문
인터페이스
인터페이스는 클래스 혹은 프로그램이 제공하는 기능을 명시적으로 선언하는 역할을 한다.
구현된 코드가 없고 추상 메서드와 상수로만 이루어져 있어 인스턴스를 생성할 수 없다.
인터페이스 만들기
이클립스 File - Interface를 클릭하거나 Ctrl + N을 눌러 interface를 클릭해 생성할 수도 있다.
인터페이스에서 선언한 변수는 public static final 예약어를 사용하지 않아도 컴파일 과정에서 상수로 변환된다.
인터페이스에서 선언한 메서드는 구현 코드가 없으며,
abstract abstract 예약어를 사용하지 않아도 컴파일 과정에서 추상 메서드로 변환된다.
클래스에서 인터페이스 구현하기
선언한 인터페이스를 클래스가 사용하는 것을 '클래스에서 인터페이스를 구현한다' 라고 표현한다.
상속에서 extends를 썼던 것 처럼, 인터페이스를 사용하려면 implements 예약어를 사용한다.
그런데 클래스에서 인터페이스를 구현하려고 위와 같이 작성하면 오류가 발생하는 것을 볼 수 있는데,
이는 추상 메서드를 구현하지 않았기 때문이다.
만약 오류를 없애려면 추상 메서드를 구현하거나, 클래스를 추상 클래스( abstract 예약어 사용 )로 만들어야 한다.
예제03에서는 추상 메서드 times( )와 devide( )를 구현하지 않았으므로 Calculator를 추상 클래스로 구현한다.
예제04는 Calc 인터페이스를 구현한 Calculator 클래스를 상속받았다.
나눗셈을 할 때 나누는 값이 0일 경우 오류 메시지를 반환하도록 작성하였다.
상속 관계에서 하위 클래스는 상위 클래스 자료형에 묵시적 형 변환이 가능했는데, 인터페이스도 마찬가지이다.
CompleteCalc 클래스는 상위 클래스인 Calculator형이면서, Calc 인터페이스를 구현하였으므로 Calc형이기도 하다.
따라서 다음과 같이 Calc형으로 선언한 변수에 대입 가능하다.
calc2 변수는 Calc형으로 선언되었기 때문에 CompleteCalc 클래스에서 추가 구현한 showInfo( ) 메서드는 사용할 수 없다.
Calc형으로 선언한 변수에서 사용할 수 있는 메서드는 Calc 인터페이스에서 선언한 메서드 뿐인 것이다.
'프로그래밍 > JAVA' 카테고리의 다른 글
10-3 인터페이스 요소 살펴보기 (0) | 2023.03.05 |
---|---|
10-2 인터페이스와 다형성 (0) | 2023.03.05 |
09-4 final 예약어 (0) | 2023.03.04 |
09-3 템플릿 메서드 응용하기 (0) | 2023.03.04 |
09-2 템플릿 메서드 (0) | 2023.03.02 |