인터페이스는 모든 메서드가 추상 메서드로 선언되어있고 (public abstract), 모든 변수는 상수로 선언되어있다(=멤버 변수를 가질 수 없다) (public static final). 참고로 자바8 부터 디폴트 메서드와 정적 메서드 기능의 제공으로 일부 구현 코드가 있다!
interface 인터페이스 이름{
public static final float pi = 3.14F;
public void makeSomething();
}
인터페이스는 클래스나 프로그램이 제공하는 기능을 명시적으로 선언하고, 일종의 클라이언트 코드와의 약속이며 클래스나 프로그램이 제공하는 명세와 같은 역할을 한다. 어떤 객체가 하나의 인터페이스 타입이라는 것은 그 인터페이스가 제공하는 모든 메서드를 구현했다는 의미와 같다.
자바의 인터페이스는 구현 코드가 없으므로 하나의 클래스가 여러 인터페이스를 구현할 수 있다. 디폴트 메서드가 중복 되는 경우는 구현 하는 클래스에서 재정의해야하며, 여러 인터페이스를 구현한 클래스는 인터페이스 타입으로 형 변환 되는 경우 해당 인터페이스에 선언된 메서드만 사용 가능하다.
물론 인터페이스 사이에도 extends 키워드를 사용해 상속을 사용할 수 있다. 인터페이스는 다중 상속이 가능하며 구현 코드의 상속이 아니므로 타입 상속 이라고 한다.
자바의 자료구조에 대해 알아보자. 우선 자료구조란 프로그램에서 사용할 많은 데이터를 메모리 상에서 관리하는 여러 구현방법들을 의미한다. 자료구조의 종류로는 간략히 아래와 같다.
- 배열 (Array) : 선형으로 자료를 관리. 정해진 크기의 메모리를 먼저 할당받아 사용한다.
- 연결 리스트 (LinkedList) : 선형으로 자료를 관리. 자료가 추가될 때마다 메모리를 할당 받고, 자료는 링크로 연결된다.
- 스택 (Stack) : 가장 나중에 입력 된 자료가 가장 먼저 출력되는 자료 구조 (Last In First OUt)
- 큐 (Queue) : 가장 먼저 입력 된 자료가 가장 먼저 출력되는 자료 구조 (First In First Out)
- 트리 (Tree) : 부모 노드와 자식 노드간의 연결로 이루어진 자료 구조
- 힙(heap) : Priority queue를 구현 (우선 큐)
- 그래프 (Graph) : 정점과 간선들의 유한 집합 G = (V,E). 간선은 방향성이 있는 경우와 없는 경우가 있다.
- 해싱 (Hashing) : 자료를 검색하기 위한 자료 구조. key는 유일하고 이에 대한 value를 쌍으로 저장한다.
'etc... > 패스트캠퍼스 챌린지' 카테고리의 다른 글
Java & SpringBoot로 시작하는 웹프로그래밍 : 자바 인강 - Ch.7 (0) | 2021.12.28 |
---|---|
Java & SpringBoot로 시작하는 웹프로그래밍 : 자바 인강 - Ch.6 (0) | 2021.12.19 |
Java & SpringBoot로 시작하는 웹프로그래밍 : 자바 인강 - Ch.4 (0) | 2021.12.07 |
패스트캠퍼스 챌린지 최종 후기 (0) | 2021.12.07 |
패스트캠퍼스 챌린지 30일차 - Part1. Ch10 (0) | 2021.11.30 |