ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 20240823 9일차
    카테고리 없음 2024. 8. 23. 17:26

    [추상 클래스]

    • 객체를 생성할 수 있는 클래스 (실체 클래스)들의 공통적인 필드/메소드를 추출해서 선언한 클래스
    • 클래스가 설계도라면, 추상 클래스는 미완성 설계도
    • 선언: [접근지정자] abstract class [클래스 이름]
    • new 연산자를 이용해서 객체를 직접 만들지 못함!!
    • 상속을 통해 자식 클래스만 만들 수 있음

    [추상 메서드]

    • 선언부만 있고 구현부가 없는 메서드
    • 추상 메소드 선언: abstract [return type] method_name (params);
    • 자식 클래스들의 공통 메소드를 뽑아서 추상 클래스로 작성할 때, 메소드 시그니처만 동일하고 메서드 내용은 자식 클래스마다 달라야 하는 경우가 많음
    • 추상 메소드는 메소드의 필요성만 알고, 아직 메소드의 내용을 모르기 때문에, 메소드 실행 내용인 중괄호 { }가 없음
    • 자식 클래스에서 반드시 추상 메소드를 오버라이딩 해야함!!

    [인터페이스]

    • 완전히 추상적인 개념을 정의하는 데 사용됨
    • 인터페이스 내에 선언된 필드는 기본적으로 'public static final'로 선언되며, 상수로만 사용됨 (public static final 키워드 생략 가능)
    • 다중 상속을 지원하기 때문에 클래스의 다중 상속 효과를 "간접적"으로 얻을 수 있음
    • 여러 클래스가 공통 기능을 구현해야 하지만, 상속 계층에 속하지 않을 때 사용함
    • 인터페이스 내에는 구현된 메소드를 포함 불가 (디폴트 메서드, 정적 메서드 예외)
    • 인터페이스 내에서 명시가 필요한 접근지정자: default, static, private
      • public, abstract는 생략 가능
    • 인터페이스는 최고 조상이 없다 (class는 최고 조상이 Object임)
    • default method: 인터페이스 내에서 기본적으로 제공하는 구현부가 포함된 메서드
      • 인터페이스의 확장성을 높여줌 (새로운 메서드를 추가하면서 하위 호환성 유지 가능)
      • 인터페이스를 구현하는 클래스에서 선택적으로 오버라이딩 하여 사용 가능
    • 인터페이스에서의 static field와 static method
      • static field는 인터페이스의 이름 및 인터페이스를 구현한 객체를 통해서도 접근 가능
      • static method는 인터페이스의 이름을 통해서만 호출 가능
    • 인터페이스 상속
      • 인터페이스 - 인터페이스 상속: interface 자식인터페이스 extends 부모인터페이스
      • 자식 클래스 - 인터페이스 구현: class 자식클래스 implements 부모인터페이스
      • 인터페이스 - 다중 인터페이스 상속: interface 자식인터페이스 extends 부모인터페이스1, 부모인터페이스2
      • 자식클래스 - 다중 인터페이스 구현: class 자식클래스 implements 부모인터페이스1, 부모인터페이스2
      • 자식클래스 - 부모클래스 상속, 다중 인터페이스 구현: class 자식클래스 extends 부모클래스 extends 부모인터페이스1, 부모인터페이스2

    인터페이스 vs 추상 클래스

      인터페이스 추상 클래스
    목적 - 클래스가 구현해야 하는 메서드의 집합을 정의하여 다형성을 쉽게 구현함 - 특정 기능의 구현을 강제함 - 여러 클래스 간에 공통된 코드를 재사용 - 추상 개념 표현 - 상속 구조 지원
    구현 메소드 포함 ❌ * default 메서드, static 메서드는 예외 포함 ⭕
    인스턴스 변수 포함 ❌ 포함 ⭕
    다중 상속
    default 메서드
    생성자, main( )
    상속에서의 부모 인터페이스 인터페이스, 추상 클래스
    접근 범위 모든 멤버 공개 추상 메서드를 최소한 자식에게 공
    최고 조상 없음 Object Class

    [익명 클래스]

    • 중첩 클래스의 특수한 형태로 코드가 단순해지기 때문에 이벤트 처리나 스레드 등에서 자주 사용
    • 이름이 없는 일회성 클래스로, 클래스를 정의하고 즉시 인스턴스화할 때 사용됨
    • 인터페이스나 추상 클래스를 구현하거나 기존 클래스의 메서드를 오버라이딩할 때 사용
Designed by Tistory.