다형성(2)

최지홍·2022년 1월 24일
0

매일 공부

목록 보기
8/40

추상 메서드

  • 자손 클래스에서 반드시 재정의되는 것들 → 조상에서의 구현이 무의미
  • 메서드 선언부만 남김
  • abstract 키워드 추가

추상 클래스

  • 추상 메서드를 하나 이상 가진 클래스
  • abstract 추가
  • 상속 전용 클래스
  • 객체 생성 불가
  • 상위 클래스 타입으로 자식 참조는 가능
  • 조상 클래스에서 상속받은 abstract 메서드를 재정의하지 않은 경우 해당 클래스도 추상 클래스
  • 구현의 강제를 통해 프로그램의 안전성 향상
  • 인터페이스와 달리(자바8 이전) 추상 메서드가 아닌 것도 포함

인터페이스

  • 최고 수준의 추상화 단계
    • 모든 메서드가 abstract
  • 자바8에서 default method와 static method 추가
  • 클래스와 유사하게 선언
  • 모든 멤버변수는 public static final이며 생략 가능
  • 모든 메서드는 public abstract이며 생략 가능
  • 클래스와 마찬가지로 인터페이스도 extends 이용해 상속 가능
  • 클래스와 달리 다중 상속 가능
  • implements 키워드
  • 모든 abstract 메서드 구현 필요
  • 조상 인터페이스에도 다형성 적용
  • 구현의 강제로 표준화 처리
  • 인터페이스를 통한 간접적 클래스 사용 👉 손쉬운 모듈 교체 지원
  • 서로 상속 관계가 없는 클래스 사이에 인터페이스를 통한 관계 부여
  • 모듈 간 독립적 프로그래밍 가능

default method

  • 인터페이스에 선언된 구현부가 있는 메서드
  • default 예약어로 시작
  • 구현 클래스로 접근
  • public 생략
  • 기존 인터페이스에 추가하여 구현 클래스들에게 미치는 영향 최소화
  • 메서드 충돌 시 super class의 메서드가 우선되며, 다른 인터페이스와 충돌시 재정의 필수

static method

  • 일반 static 메서드와 마찬가지로 별도의 객체 필요 없음
  • 인터페이스 이름으로 바로 접근

제네릭

  • 컴파일 시에 타입 체크
  • 미리 사용할 타입을 명시하여 형변환 번거로움 감소
  • 타입 안전성 향상
  • <> 사이에 타입 파라미터 표시
  • class 클래스
  • 컴파일 타임에 타입 파라미터들이 대입된 타입으로 대체됨
  • 필요에 따라 구체적인 타입 제한 필요
    • T extends Number: Number를 상속받는 클래스로 제한
    • 인터페이스도 마찬가지
    • 클래스와 함께 인터페이스 제약 조건을 이용할 경우 &로 연결
    • 와일드카드
      • : 타입 제한이 없음
      • : T 또는 T를 상속받은 타입
      • : T 또는 T의 조상 타입
  • 제네릭 메서드: 파라미터와 리턴타입으로 타입 파라미터를 갖는 메서드
  • 접근제한자와 반환형 사이에 타입 파라미터 위치
  • 클래스에 타입 파라미터 선언시 그대로 사용 가능
profile
백엔드 개발자가 되자!

0개의 댓글