-
1. 인터페이스 역할
- 인터페이스는 코드의 분리와 관련이 있다.
-인터페이스는 다형성의 주된 기술임
- 두 객체를 연결하는 역할을 한다.
*인터페이스는 접점으로 타 클래스,서비스와 연결
* 인터페이스는 제공자와 구현자 따로 있다고 생각하면 편해진다.
>제공자는 인터페이스형으로 부품을 채워넣고 -> 구현은 따로
2. 인터페이스 선언
interface사용 - default (같은 패키지) public(모든 패키지) 접근제어자 사용가능
3. 상수필드
public static final 타입 상수명 = 값 가질 수 있다.
인터페이스 소속멤버
public abstract method 추상메서드
구현 클래스가 완성해야하는 추상메서드
인터페이스의 핵심 (부품화,다형성)
인스턴스 소속 멤버
default 메서드 완전한 실행코드 가짐
기존 인터페이스에 메서드 추가되면..다 고쳐야하는데 개오바임
이럴때 좋은 녀석
접근제어자 public으로 바꾸고 오버라이딩 가능
인스턴스 소속 멤버
static 메서드
인터페이스 소속 멤버
메서드 완성해야함
-번외
private 메서드 -> default에서 사용가능 (default간 중복코드 제거용)
private static 메서드 -> default, static메서드 중복코드 제거용
public interface Service{ default void defaultMethod1(){ //고유코드 defaultCommon() } default void defaultMethod2(){ defaultCommon() } private void defaultCommon(){ //공통처리 } //정적 메소드 static void staticM1(){ //고유코드 staticCommon(); } static void staticM2(){ //고유코드 staticCommon(); } private static void staticCommon(){ //공통처리 } }
8. 다중인터페이스 구현
-여러개 인터페이스 implements 할 수 있다
- 두개의 인터페이스로 하나의 구현클래스에 접근할 수 있다는 것
9. 인터페이스 상속
- 인터페이스는 다중상속 허용
- 부모 인터페이스 참조변수 = 구현체 --> 부모 인터페이스 메서드만 사용가능
자식 인터페이스 참조변수 = 구현체 --> 모두 사용가능
(상속과 일치)
10. 인터페이스 타입변환
- 인터페이스와 구현클래스간 발생
**** 부모 클래스가 인터페이스 구현 -> 이를 상속받은 자식클래스도 간접적으로 인터페이스를 구현하므로
인터페이스로 타입변환이 가능함!!
- 인터페이스 참조변수를 구현 클래스로 강제 타입변환도 가능
11. 다형성
- 인터페이스는 다형성을 구현하는 주된 기술이다.
- 메서드 오버라이딩 + 자동 타입변환 --> 다형성
구현체는 인터페이스 타입으로 자동 타입변환이 되고, 메소드 호출시 재정의된 메서드가 호출됨
> 필드의 다형성
특정 필드를 인터페이스형으로 설정해두고, 이를 구현한 클래스를 끼어넣을 수 있는 그런 것
인터페이스 타입 필드 -> 일종의 api
제공자는 구현되어야할 메서드만 정의한 뒤에 이를 필드로 사용하고, 구현은 넘김 (부품,분리,교체)
>매개변수의 다형성
매개변수를 인터페이스로 선언하면 메서드 호출 시 다양한 구현체를 대입할 수 있다.
-번외
봉인된 인터페이스 (sealed 자바 15부터 추가 자세한 내용은 책보기)
추상클래스와 인터페이스 차이
추상클래스는 공통분모를 일반화 한것 ( 공통, 집중화, 추상화)
- 공통코드를 통해 일괄관리 가능
- 부품들 집중화 위한 것
인터페이스
- 틀을 먼저 제공 - 실제 부품은 아직 x
- 서로 관련 없는 클래스라도 인터페이스 상속으로 부품 가능 -> 집중화가 아님
- 인터페이스는 캡슐단위, 일부기능, 코드 일부 구간 3가지에서 사용가능
- 일정 기능만 구현해 놓으면, 다양한 클래스들을 엮어서 다양한 형태 만들 수 있음 --> 다형성
FileReader fi = new FileReader(//경로) Scanner sc = new Scanner(fi); String classname = sc.nextLine(); A a = new A(); //파일로부터 읽어온 이름으로 Class객체 만든 후, newinstance()메서드로 구현체 생성 Class newclass = Class.forName(className); Totalable tc = (Totalable) nc.newinstance(); a.setTotalable(tc); // 파일 내용 nw.java.B
'언어 > JAVA' 카테고리의 다른 글
클래스,인스턴스 메서드 메모리 저장,싱글톤,접근제한자 (0) 2023.07.06 참조타입,메모리,배열복사 (0) 2023.07.06 람다식 (0) 2023.07.05 객체지향 - 캡슐화 (0) 2023.06.12 자바 - 입출력(I/O) (1) 바이트기반 스트림/ 문자기반 스트림 (0) 2023.05.14