📌 인터페이스
- 일종의 추상클래스 (추상클래스보다 추상화 정도 높음)
- 추상메서드와 상수만 멤버로 가질 수 있음
인터페이스 작성
package com.kh.sum.myPage.model.service;
public interface MyPageService { // 인터페이스 선언
int selectCount(); // 추상메소드
int getQnACount();
}
인터페이스 상속
- 인터페이스는 클래스와 달리 다중상속 가능
- 다중상속할 경우 상속한 모든 인터페이스의 추상 메소드들을 오버라이딩해서 구현해야 함
인터페이스 구현
- 클래스 상속과 비슷. 'extecds' 대신 'implements' 사용
- 인터페이스에 정의된 추상메서드 완성해야 함
- 상속과 구현 동시 가능
package com.kh.sum.myPage.model.service;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.kh.sum.myPage.model.mapper.MyPageMapper;
import com.kh.sum.myPage.model.mapper.MyQnAMapper;
@Service
public class MyPageServiceImpl implements MyPageService {
@Autowired
private MyPageMapper mapper;
@Autowired
private MyQnAMapper qnaMapper;
@Override
public int selectCount() {
return mapper.selectCount();
}
@Override
public int getQnACount() {
return qnaMapper.selectMyQnACount();
}
}
인터페이스의 장점
- 개발시간 단축 (어느정도 설계도 작성되어 있어서)
- 표준화 가능 (같은 미완성 설계도 틀 사용해 작성하니까)
- 서로 관계없는 클래스들에게 관계를 맺어 줌 (공통 인터페이스 구현하게 해서)
- 독립적인 프로그래밍 가능
(클래스의 선언부(인터페이스)와 구현부(인터페이스 구현한 클래스) 분리시켜서
구현부 변경될 때 선언부를 이용하는 다른 클래스들에게 영향 미치지 않음)
인터페이스 레퍼런스를 통해 구현체를 사용하는 방법
인터페이스의 기본 메소드 (Default Method), 자바 8
- 원래는 인터페이스에서는 선언만 가능하고 구현은 안되는데
default 라고 앞에 명시하면 메소드 구현 가능
- 인터페이스에 새로운 메서드 추가하면 이를 구현하는 모든 클래스가 추가된 메서드를 구현해야해서
이 문제를 해결하기 위해 만들어짐
인터페이스의 static 메소드, 자바 8
- 인터페이스 내의 static 메소드 생성
- 접근제어자는 항상 public
- 구현부 있어야함, implements 한 클래스에서 override 불가능
인터페이스의 private 메소드, 자바 9
- 자바 8에서는 default method, static method 추가되고
자바 9에서는 private method, private static method가 추가됨
- 내부에서 처리되는 기능인데도 외부에서 공개되는 public 메소드로 생성해야하는 불편함을 개선하기 위해 만들어짐
[참고]
'스터디 > 2209_자바의정석' 카테고리의 다른 글
11주차 과제 : Enum (0) | 2022.10.18 |
---|---|
10주차 과제 : 멀티쓰레드 프로그래밍 (0) | 2022.10.18 |
7주차 과제 : 패키지 (0) | 2022.10.06 |
6주차 과제 : 상속 (0) | 2022.09.29 |
5주차 과제 : 클래스 (0) | 2022.09.26 |
댓글