TIL 6/23/2022

songunnie·2022년 6월 23일
0

TIL

목록 보기
17/19

추상클래스, 추상메소드

  • 추상클래스는 미완성 설계도를 가진 클래스라고 생각하자.
  • 추상클래스 추상메서드를 선언할 수 있는 클래스로 불완전 형태이다.
    (설계만 되어있고, 구현체가 없는 것)
    • 접근제한자, 리턴타입, 메소드명(파라미터)는 있지만 중괄호 블록 없음.
      예)
      public int sum(int a, int b);
      // 원래 같으면, public int sum(int a, int b){함수가 들어가야해!}
  • 추상: 여러 가지 사물이나 개념에서 공통되는 특성이나 속성 따위를 추출하여 파악하는 작용.
  • 컴퓨터 과학에서의 추상화는 복잡한 자료, 모듈, 시스템 등으로부터 핵심적인 개념 또는 기능을 간추려 내는 것을 말한다.
  • 객체 지향 관점에서의 추사황는 클래스를 정의할 때, 불필요한 부분들을 생략하고 객체의 속성 중 중요한 것에만 중점을 두어 개략화(나쁜 점을 보완하여 더 좋게 고치게 됨.) 하는 것.
    • 클래스들의 중요하고 공통된 성질들을 추출하여 슈퍼 클래스를 선정하는 개념이다.
  • 추상클래스 자체로는 인스턴스를 생성 할 수 없다.
    • 상속받는 자식 클래스 없이는 그 자체로 불가능

추상클래스를 사용했을 때의 장점

  • 코드가 간결해짐
    • 생산성 증가, 가독성 증가, 에러감소, 유지 보수시 시간 단축 가능
  • 슈퍼 클래스 덕분에 코드의 재사용성이 증가

인터페이스

  • 인터페이스는 하나도 만들어 지지않은 기본설계도라고 볼 수 있다.
  • 추상클래스와 마찬가지로 객체의 인스턴스를 생성할 수 없다.
    • 추상 클래스는 추상 메소드뿐만 아니라 생성자, 필드, 일반 메소드도 포함할 수 있지만 인터페이스는 오로지 추상 메소드와 상수만을 포함할 수 있다.
    • 그럼 추상클래스만 쓰지 인터페이스를 왜 써? 왜? why? -> 자바는 클래스를 통한 다중 상속은 지원하지 않지만 클래스와 인터페이스를 통한 다중 상속은 지원하기 때문!
    • 추상클래스나 인터페이스에 구현한 추상메소드들은 상속받는 클래스들에게 강제성을 부여! -> 꼭 오버라이딩 해서 사용해야만 함.

추상클래스 vs 인터페이스

추상클래스 인터페이스
1.클래스를 상속받아 이용 및 확장을 위함 1.구현하려는 객체의 동작의 명세
2.다중 상속 불가능, 단일 상속만 가능 2.다중 상속 가능
3.extends르 이용하여 구현 3.implements를 이용하여 구현
4.추상메소드에 대한 구현 가능 4.메소드 시그니처(이름, 파라미터, 리턴 타입)에 대한 선언만 가능
profile
코베베

0개의 댓글