자바기반응용프로그래밍 - 추상메소드, 추상클래스, 인터페이스

2022. 4. 14. 15:41·Language/JAVA

 

추상 메소드

 

선언되어 있으나 아직 구현되지 않은 메소드, abstract로 선언

이후 반드시 서브클래스에서 오버라이딩 하여 구현 필요!

 

 

추상 클래스

 

추상 메소드를 하나라도 가졌다면 반드시 추상 클래스로 선언해야 함(없어도 추상 클래스로 선언 가능)

객체 생성 불가

슈퍼 클래스에서는 개념 정의, 서브 클래스마다 목적에 맞게 추상 메소드 다르게 구현

 

추상 클래스를 상속 받는 서브 클래스:

추상 메소드를 구현하지 않으면 abstract으로 선언해야 함 

추상 메소드를 구현하면 추상 클래스 x => @Override로 검사하기

 

 

(코드)

 

 

인터페이스

 

클래스가 구현해야 할 메소드들이 선언되는 추상형, interface 키워드로 선언

 

상수와 추상메소드, default/private/static 메소드 선언 가능

일반 필드(멤버 변수) 선언 불가능!

 

객체 생성 불가 ex. new PhoneInterface();

레퍼런스 변수는 선언 가능 ex. PhoneInterface galaxy;

다른 인터페이스 상속 가능, 인터페이스 다중상속 가능

 

 

인터페이스의 구성 요소들의 특징

 

  • 상수: public만 허용, public static final 생략
  • 추상메소드: public abstract 생략 가능
  • default: public 생략가능, 인터페이스를 구현하는 클래스에 자동 상속
  • private: 인터페이스 내에 있는 다른 메소드에 의해서만 호출 가능
  • static: public private 가능, 만약 생략하면 public으로 처리

 

 

추상클래스 vs 인터페이스

 

공통점

 

  • 객체 생성(인스턴스화) 불가, 상속을 위한 슈퍼 클래스로 사용된다
  • 가지고 있는 추상메소드를 서브 클래스에서 모두 구현해야 한다

 

차이점

 

추상 클래스 인터페이스
상수, 변수 필드 모두 포함
추상 메소드와 일반 메소드 모두 포함
변수 필드 포함하지 않음
protected 접근 지정자 선언 불가
다중 상속 지원
같은 슈퍼 클래스를 상속하며 그 슈퍼 클래스가 가진 기능들을 구현해야 할 경우 사용. 쉽게 말해서 기능 확장 구현 객체가 서로 다른 슈퍼 클래스를 상속하더라도, 같은 기능을 동작하게 하고 싶을 때 사용.

 

 

 

 

저작자표시 (새창열림)

'Language > JAVA' 카테고리의 다른 글

자바기반응용프로그래밍 - 주요 패키지와 클래스  (0) 2022.04.14
자바기반응용프로그래밍 - 모듈과 패키지 기초  (0) 2022.04.14
자바기반응용프로그래밍 - 캐스팅, 오버라이딩  (0) 2022.04.13
자바기반응용프로그래밍 - 배열  (0) 2022.04.12
자바기반응용프로그래밍 - 상속  (0) 2022.04.11
'Language/JAVA' 카테고리의 다른 글
  • 자바기반응용프로그래밍 - 주요 패키지와 클래스
  • 자바기반응용프로그래밍 - 모듈과 패키지 기초
  • 자바기반응용프로그래밍 - 캐스팅, 오버라이딩
  • 자바기반응용프로그래밍 - 배열
abyss-s
abyss-s
프론트엔드 개발합니다!
  • abyss-s
    abyss-s의 블로그입니다.
    abyss-s
  • 전체
    오늘
    어제
    • 분류 전체보기 (190)
      • Web (16)
        • JavaScript (6)
        • TypeScript (1)
        • React (5)
        • Vue (0)
        • Storybook (1)
        • Next.js (1)
      • Backend & Infra (8)
        • Database (3)
        • Node.js (2)
        • SpringBoot (1)
      • PS (71)
      • CS (30)
        • OS (13)
        • Structure & Algorithm (5)
        • Network (10)
        • 정보처리기사 (2)
      • Language (18)
        • OOP (1)
        • JAVA (13)
        • C++ (4)
      • Activities (14)
        • 멋쟁이 사자처럼 (2)
        • OSSCA (3)
        • LG U+ URECA (5)
        • Project (2)
      • AI (0)
      • Git & Github (5)
      • Notion (1)
      • IT (4)
      • Statistics (11)
      • Book (4)
      • Diary (1)
      • Game (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • 깃허브
    • 백준
    • 트위터
  • 공지사항

    • abyss-s의 티스토리에 오신 것을 환영합니다.
  • 인기 글

  • 태그

    Java
    파이썬
    생활코딩
    React
    자바기반응용프로그래밍
    github
    BAEKJOON
    DP
    코드트리
    통계학
    BFS
    백준
    OS
    네트워크
    JavaScript
    Python
    자바스크립트
    운영체제
    C++
    그리디
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
abyss-s
자바기반응용프로그래밍 - 추상메소드, 추상클래스, 인터페이스
상단으로

티스토리툴바