[객체지향프로그래밍][Java] 인터페이스의 구성 요소 심화 내용

2023. 5. 31. 17:05·전공/객체지향프로그래밍
목차
  1. 자바 인터페이스의 구성 요소
728x90
반응형

자바 인터페이스의 구성 요소

(취소선 부분 생략 가능)

상수

  • public static final

 

int X = 10;

int X;

 

int X = 10;은 public static final int X = 10;이 생략된 형태로 X라는 상수를 정의한 것이지만,

int X;는 변수를 선언하는 것으로 해석되기 때문에 컴파일 에러가 발생

 

메소드

public abstract
(abstract public)
추상 메소드
함수 몸통 부분 없음
사용하려면 반드시 함수 몸체 구현 필요
public default
(default public)
인터페이스 내에서 메소드 정의({ } 부분이 필요함, 정의 안하면 컴파일 에러)
인터페이스 상속하여 default 메소드 사용 가능
오버라이딩 가능

Interface A -> Interface B -> class C
C에서 A에 있는 default 함수 호출 불가(A.super.A_Method(); 불가), 오버라이딩은 가능
public static
(static public)
인터페이스 내에서 메소드 정의({ } 부분이 필요함, 정의 안하면 컴파일 에러)
InterfaceName.staticMethod() 형식으로 사용(객체.staticMethod 형식은 컴파일 에러)
오버라이딩 불가
private 인터페이스 내에서 메소드 정의({ } 부분이 필요함, 정의 안하면 컴파일 에러)
오버라이딩 불가
private static
(static private)
인터페이스 내에서 메소드 정의({ } 부분이 필요함, 정의 안하면 컴파일 에러)
오버라이딩 불가

private 메소드는 해당 인터페이스 안에서의 사용을 위해 만들어짐(오버라이딩 불가)

static 메소드는 인터페이스 자체에서 사용됨(오버라이딩 불가)

 

상속에서 주로 상위 클래스 혹은 인터페이스의 레퍼런스를 만들고, 하위 클래스의 객체를 만들어 사용

실행되는 메소드는 참조 레퍼런스의 타입에 상관없이 객체의 메소드가 실행됨

 

오버라이딩 했지만 부모 인터페이스의 메소드를 호출하고 싶다면, '부모인터페이스이름.super.메소드이름'으로 호출 가능

단, 직접적으로 상속하는 인터페이스의 메소드만 가능(Interface A -> Interface B -> class C, C에서 A의 메소드 super로 호출 불가)

 

두 인터페이스 이상을 상속받는 경우

  • 오버라이딩을 통해 상속받는 인터페이스들의 메소드 모두 구현 가능
  • 부모 인터페이스의 default 메소드를 호출하고 싶다면, '부모인터페이스이름.super.메소드이름'으로 호출 가능
  • 인터페이스에 함수 이름이 같고 형태가 다른 메소드(예를 들어 public abstract, public default)가 존재하면 필수적으로 오버라이딩 필요(그렇지 않다면 컴파일 에러)

 

추상 클래스와 인터페이스를 동시에 상속받는 경우

  • 오버라이딩이 추상 클래스, 인터페이스의 메소드에 모두 적용

 

클래스와 인터페이스를 동시에 상속받는 경우

  • 클래스의 메소드를 상속받고, 상속받은 메소드가 인터페이스까지 오버라이딩
  • 오버라이딩이 클래스, 인터페이스의 메소드에 모두 적용
728x90
반응형

'전공 > 객체지향프로그래밍' 카테고리의 다른 글

[객체지향프로그래밍][Java] List 심화 내용(Iterator)  (0) 2023.06.01
[객체지향프로그래밍][Java] 모듈과 패키지 개념 (Object, Wrapper, Integer, String, StringBuffer, StringTokenizer, Math, Calendar)  (0) 2023.05.31
[객체지향프로그래밍][Java] 상속 3 (추상 메소드, 추상 클래스, 인터페이스)  (0) 2023.05.08
[객체지향프로그래밍][Java] 상속 2 (오버라이딩)  (0) 2023.04.27
[객체지향프로그래밍][Java] 상속 1 (객체 생성, 접근 지정자, 업캐스팅, 다운캐스팅, instanceof 연산자)  (0) 2023.04.27
  1. 자바 인터페이스의 구성 요소
'전공/객체지향프로그래밍' 카테고리의 다른 글
  • [객체지향프로그래밍][Java] List 심화 내용(Iterator)
  • [객체지향프로그래밍][Java] 모듈과 패키지 개념 (Object, Wrapper, Integer, String, StringBuffer, StringTokenizer, Math, Calendar)
  • [객체지향프로그래밍][Java] 상속 3 (추상 메소드, 추상 클래스, 인터페이스)
  • [객체지향프로그래밍][Java] 상속 2 (오버라이딩)
dev_ares
dev_ares
대학에서 컴퓨터공학을 전공하고 있는 학생입니다.
    반응형
    250x250
  • dev_ares
    노트
    dev_ares
  • 전체
    오늘
    어제
    • 분류 전체보기 (187)
      • IT 트랜드 (2)
      • 백엔드 (18)
        • Java + Spring (8)
        • Kotlin + Spring (5)
        • 백엔드 (5)
      • 프론트엔드 (1)
        • React (1)
      • 대외활동 (17)
        • 42서울 (17)
      • 백준 (6)
        • Java (2)
        • C++ (3)
      • 전공 (121)
        • 객체지향프로그래밍 (17)
        • 자료구조 (23)
        • 리눅스시스템관리 (16)
        • 컴퓨터구조 (25)
        • 네트워크 (25)
        • 데이터베이스 (15)
        • 기타 전공 (0)
      • 프로그래밍 언어 (18)
        • Java (5)
        • Swift (4)
        • C++ (1)
        • Kotlin (8)
      • 기타 (4)
  • 블로그 메뉴

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

  • 공지사항

  • 인기 글

  • 태그

    데이터패스
    42서울
    상속
    자료구조
    명령어
    자바
    반복자
    컴퓨터 구조 및 설계
    메모리 계층 구조
    리눅스
    컴퓨터구조
    추가 문제
    컴공 포트폴리오
    티스토리챌린지
    코틀린
    C++
    단일 사이클
    사설 문제
    백준
    오블완
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
dev_ares
[객체지향프로그래밍][Java] 인터페이스의 구성 요소 심화 내용
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.