상세 컨텐츠

본문 제목

자바강의 - [5주차] 객체와 객체 지향 프로그래밍 핵심 (2)

Programming/Java

by leediz 2022. 2. 21. 21:05

본문

자바강의 - [5주차] 객체와 객체 지향 프로그래밍 핵심 (2)


인터페이스 (Interface)

  • 추상메서드와 상수만을 멤버로 가질 수 있음
  • 인터페이스 자체를 활용한다기 보다는 다른 클래스를 작성하는데 도움을 줄 목적으로 사용
  • 모든 멤버변수는 public static final 이어야 하며, 이를 생략할 수 있음
  • 모든 메서드는 public abstract 이어야 하며, 이를 생략할 수 있음 (단, static 메서드와 디폴트 메서드는 예외(JDK 1.8부터)
  • 인터페이스는 인터페이스로부터만 상속 받을 수 있고, 클래스와는 달리 다중상속이 가능함
  • 예제 문법
interface 인터페이스이름 {
  public static final 타입 상수이름 = 값;
    public abstract 메서드이름(매개변수목록);
}

class 클래스이름 implements 인터페이스이름 {
  // 인터페이스에 정의된 추상메서드를 모두 구현
}

인터페이스를 이용한 다형성

  • 다형성을 이용하여 자손클래스의 인스턴스를 조상타입의 참조변수로 참조하는 것이 가능
  • 인터페이스는 인터페이스를 구현한 클래스의 조상이라고 할 수 있으므로 해당 인터페이스 타입의 참조변수로 이를 구현한 클래스의 인스턴스를 참조할 수 있음
  • 리턴타입이 인터페이스라는 것은 메서드가 해당 인터페이스를 구현한 클래스의 인스턴스를 반환한다는 것을 의미

인터페이스의 장점

  • 개발시간을 단축시킬 수 있음
    • 인터페이스가 작성되면, 메서드의 내용에 관계없이 선언부만 알면 되기 때문에 프로그램을 작성하는 것이 가능함
  • 표준화가 가능
    • 기본 틀을 인터페이스로 작성한 다음, 개발자들에게 인터페이스를 구현하여 프로그램을 작성하도록 함으로써 보다 일관되고 정형화된 프로그램의 개발이 가능
  • 서로 관계없는 클래스들에게 관계를 맺어줄 수 있음
    • 아무런 관계가 없는 클래스들에게 하나의 인터페이스를 공통적으로 구현하도록 함으로써 관계를 맺어줄 수 있음
  • 독립적인 프로그래밍이 가능
    • 클래스의 선언과 구현을 분리시킬 수 있기 때문에 실제구현에 독립적인 프로그램을 작성하는 것이 가능하며 직접적인 관계가 아닌 인터페이스를 이용한 간접적인 관계로 변경하면 클래스간의 변경이 영향을 미치지 않는 독립적인 프로그래밍이 가능함

디폴트 메서드

  • JDK 1.8부터 디폴트 메서드를 추가할 수 있음
  • 구현을 가지는 메서드, 인터페이스를 구현하는 클래스들에서 공통으로 사용할 수 있는 기본 메서드
  • 구현하는 클래스에서 재정의 할 수 있음
  • default 키워드 사용
  • 예제 문법
default void 메서드_이름() {
  // 메서드 구현
}

static 메서드

  • JDK 1.8부터 디폴트 메서드를 추가할 수 있음
  • 인스턴스 생성과 상관없이 인터페이스 타입으로 사용할 수 있는 메서드

private 메서드

  • 인터페이스를 구현한 클래스에서 사용하거나 재정의 할 수 없음
  • 인터페이스 내부에서만 사용하기 위해 구현하는 메서드
  • default 메서드나 static 메서드에서 사용함

여러가지 자료구조에 대해 알아보기

자료 구조(Data Structure)란?

  • 프로그램에서 사용할 많은 데이터를 메모리 상에서 관리하는 여러 구현 방법들
  • 효율적인 자료구조가 좋은 성능의 알고리즘의 기반이 됨
  • 자료의 효율적인 관리는 프로그램의 수행속도와 밀접한 관련이 있음

선형 자료구조

  • 배열(Array)
    • 선형으로 자료를 관리
    • 정해진 크기의 메모리를 먼저 할당받아 사용
    • 자료의 물리적 위치와 논리적 위치가 같음
  • 연결 리스트(LinkedList)

    • 선형으로 자료를 관리

    • 자료가 추가될 때마다 메모리를 할당 받고, 자료는 링크로 연결됨

    • 자료의 물리적 위치와 논리적 위치가 다를 수 있음

    • 리스트에 자료 추가

    • 리스트에서 자료 삭제

  • 스택(Stack)

    • 가장 나중에 입력 된 자료가 가장 먼저 출력되는 자료구조(Last In First Out)
  • 큐(Queue)

    • 가장 먼저 입력 된 자료가 가장 먼저 출력되는 자료구조(First In First Out)
  • 트리(Tree)

    • 부모 노드와 자식 노드간의 연결로 이루어진 자료 구조
  • 이진 트리(Binary Tree)

    • 부모 노드에 자식 노드가 두 개 이하인 트리
  • 그래프(Graph)

    • 정점과 간선들의 유한 집합 G = (V,E)
    • 정점(vertex) : 여러 특성을 가지는 객체, 노드(node)
    • 간선(edge) : 이 객체들의 연결 관계를 나타냄, 링크(link)
    • 간선은 방향성이 있는 경우와 없는 경우가 있음
    • 그래프를 구현하는 방법
      • 인접 행렬(adjacency matrix)
      • 인접 리스트(adjacency list)
    • 그래프를 탐색하는 방법
      • BFS(Bread First Search) - 너비우선탐색
      • DFS(Depth First Search) - 깊이우선탐색
  • 해싱(Hashing)

    • 검색을 위한 자료구조
    • 키(key)에 대한 자료를 검색하기 위한 사전(dictionary) 개념의 자료구조
    • key는 유일하고 이에 대한 value를 쌍으로 저장
    • 해시 함수에 의해 인덱스 연산이 산술적으로 가능 O(1)
    • 저장되는 메모리 구조를 해시테이블이라 함

참고자료


Java & SpringBoot로 시작하는 웹 프로그래밍 강의 : #패스트캠퍼스 #내일배움카드 #K디지털크레딧 #바이트디그리 #자바인강

관련글 더보기

댓글 영역