Java/Doit!자바프로그래밍입문_개념정리

Java 입문 기초 정리_인터페이스

김쟈워니 2024. 5. 9. 09:36

인터페이스: 클래스 혹은 프로그램이 제공하는 기능을 명시적으로 선언하는 역할을 함.

인터페이스는 추상 메서드와 상수로만 이루어짐,

구현 코드가 없기 때문에 인터페이스로 인스턴스 생성 불가

 

추상클래스의 용도: 클래스가 상속받을 용도로 쓰임, 일부 구현코드도 있고, 추상 메서드가 들어있음

추상클래스는 복제

인터페이스는 설계용

 

클라이언트 코드가 서비스를 사용할 때 인터페이스 정의를 기반으로 사용.

 

모든 메서드가 추상 메서드(abstract method)로 이루어진 클래스

형식적인 선언만 있고 구현은 없음

인터페이스에 선언된 모든 메서드는 public abstract로 추상메서드

인터페이스에 선언된 모든 변수는 public static final로 상수

 

클래스에서 인터페이스 구현하기

Calc인터페이스를 Calculator클래스에서 구현

Calc의 모든 추상 메서드를 구현하지 않으면 Calculator는 추상 클래스가 됨

 

CompleteCalc클래스가 Calculator를 상속받은 후 모든 메서드를 구현

CompleteCalc는 생성가능한 클래스

 

구현부가 없는 인터페이스 implements 타입상속

클래스 extends 구현상속

 

인터페이스를 구현한 클래스는 인터페이스 형으로 선언한 변수로 형 변환 할 수 있음

상속에서의 형 변환과 동일한 의미

단 클래스 상속과 달리 구현코드가 없기 때문에 여러 인터페이스를 구현할 수 있음

=> implements 뒤에는 여러개의 클래스가 올수 있음

형 변환시 사용할 수 있는 메서드는 인터페이스에 선언된 메서드만 사용할 수 있음

 

인터페이스와 다형성

- 인터페이스는"클라이언트코드" 와 서비스를 제공하는"객체"사이의 약속

- 어떤 객체가 어떤 interface타입이다 라는 의미는 그 interface가 제공하는 메서드를 구현했다는 의미

- Client가 어떻게 구현되었는지 상관없이 interface의 정의만을 보고 사용할 수 있음(ex:JDBC)

- 다양한 구현이 필요한 인터페이스를 설계하는 일은 매우 중요한일

 

왜 인터페이스를 사용하는가?

인터페이스의 요소

싱수: 선언된 모든 변수는 상수로 변환됨

추상 메서드: 모든 메서드는 추상메서드로 구현

디폴트 메서드: 기본 구현을 가지는 메서드, 구현 클래스에서 재정의 할 수 있음

정적 메서드: 인스턴스 생성과 상관없이 인터페이스 타입으로 사용할 수 있는 메서드

private 메서드: 인터페이스를 구현한 클래스에서 사용하거나 재정의 할 수 없음.

                         인터페이스 내부에서만 기능을 제공하기 위해 구현하는 메소드

 

디폴트 메서드 // 정적메서드 둘다 구현코드를 제공함.

차이점:디폴트 메서드는 인스턴스 생성으로 호출가능 메서드

정적메서드는 인스턴스 생성없이 호출가능 메서드

 

private 메서드 : 자바 9부터 하위클래스에서 오버라이딩 할 수 없음, 인터페이스를 구현한 클래스에서 사용할 수 없음