이론 공부

인터페이스(Interface)

Yuco 2023. 3. 12. 20:27

 

인터페이스 (Interface)

- 클래스를 확장하여 구현

- 각 클래스의 목적에 맞게 기능을 구현

 

1. 인터페이스의 구조(=기본 설계도)

- 인터페이스는 클래스가 '무엇을 할 수 있다'라고 하는 기능을 구현하도록 강제하는 특징을 가지며, 다중 구현 가능

- 상수, 추상 메서드로 구성

 

2. 인터페이스 목적

- 자바의 다형성을 극대화하여 개발 코드의 수정을 줄이고 유지보수성을 높임

- 상속 관계가 아닌 것들도 다형적 변수에 의해 같은 타입으로 만들 수 있음

 

3. 인터페이스 구조

public interface Calc {

    double PI = 3.14;  // 인터페이스에서 선언한 변수(일반 변수로 선언)는 컴파일 과정에서 상수로 변환

   // 인터페이스에서 선언한 메서드(abstract 안쓰고 선언)는 컴파일 과정에서 추상 메서드로 변환

    int add(int num1, int num2)

}

 

4. 인터페이스 메서드

* JAVA 8 이후 추가

1) 디폴트 메서드

- 기본으로 제공되는 메서드

- 인터페이스에서 기본적으로 제공해주지만, 맘에 안 들면 각자 오버라이딩을 통해 구현 (선택적) 

2) 스태틱 메서드

- 재정의 불가능한 메서드

- 반드시 클래스 명으로 메서드를 호출(스태틱 영역에 있으므로, 스태틱 영역에 있는 건 클래스 명으로 불러야 )

- 인터페이스에서 제공해 주는 것으로 무조건 사용(절대적)

* Point 

- 인터페이스의 메서드는 추상 메서드인 형태로 존재해야 하지만, JAVA8부터 구현부가 존재하는 2가지의 메서드를 생성 가능

 

5. 인터페이스 상속

1) 형 상속(type ingeritance)

- 인터페이스 간의 상속은 extends 예약어 사용

- 구현 코드를 통한 기능을 상속하는 것이 나리라 Type만 상속

2) 다중 상속 및 다중 구현

- interface C extends A, B {}  // 인터페이스를 다중 상속 가능

- class C implements A, B {}  // 클래스는 인터페이스를 다중 구현 가능

3) 인터페이스 구현과 클래스 상속 동시에 가능 

 

6. 추상 클래스와 인터페이스의 공통점

 

- 추상 메소드를 가지고 있어야 한다.

- 인스턴스화 할 수 없다(new 생성자 사용 X)

- 인터페이스 혹은 추상 클래스를 상속받아 구현한 구현체의 인스턴스를 사용해야 한다. (인스턴스는 class에서 만들되, 그 데이터를 표현하고자 하는 타입은 인터페이스, 추상 클래스에서 정의하는 게 가능)

- 인터페이스와 추상클래스를 구현, 상속한 클래스는 추상 메소드를 반드시 구현하여야 한다.

 

 

'이론 공부' 카테고리의 다른 글

개발 방법론  (0) 2023.03.14
GET / POST 방식  (0) 2023.03.12
oauth, JWT  (0) 2023.03.11
스프링 프레임워크  (0) 2023.03.10
서블릿과 JSP의 차이  (0) 2023.03.07