[Java] interface 인터페이스 메서드 종류(default, static, private)

2024. 5. 26. 16:00·CS/Java
목차
  1. Default Method
  2. Static Method
  3. Private Method
  4. Private Method 예시

[Java] 인터페이스 interface

Love IT! [Java] 인터페이스 interface 본문 CS/Java [Java] 인터페이스 interface 1in 2024. 5. 26. 14:25

swlin23.tistory.com

위의 게시물 처럼 메서드를 선언만 해둘 수도 있지만, 인터페이스 내에서 특별한 방법으로 메서드를 사용할 수 있다.


Default Method

만약, 인터페이스를 구현하는 여러 클래스 사이에서 특정 함수의 구현이 같다면
→ 그 함수를 default 메서드로 만들 수 있다.

interface Ex {
    default void func(int num) {
    	return num;
    }
}

이처럼 default 메서드 내에서는 인터페이스도 메서드 구현을 할 수가 있다.
마찬가지로 접근제어자는 무조건 public으로 자동 변환된다. (public만 가능)
그리고 이 인터페이스를 구현하는 클래스에서 이 함수를 override 할 수 있다.
그리고, 구현 클래스에서 이 함수를 직접 적지 않아도 오류가 발생하지 않는다.


Static Method

인터페이스 내의 추상 메서드와 디폴트 메서드는 객체(인스턴스)를 만들고나서만 메서드 이용이 가능했다.
static method는 따로 객체 없이 인터페이스만을 사용하여 해당 메서드를 사용할 수 있도록 만든다.
즉, 객체 클래스 구현 없이 바로 사용이 가능하다.
인터페이스 이름을 이용하여 해당 메서드에 접근할 수 있다.

interface Ex {
    static void func1(int num) {
    	return num;
    }
    
    public static void func1(int num) {
    	return num;
    }
    
    // 다른 메서드와 달리 private 접근 제어자 가능
    private static void func1(int num) {
    	return num;
    }
}

Private Method

인터페이스 내에서 일반 추상 메서드, 디폴트 메서드, private를 붙이지 않은  정적 메서드, 필드는 모두 public이다.
public을 생략하더라도 컴파일 과정에서 자동으로 public이 된다.
private 메서드를 인터페이스 내에서 사용할 수 있다.
(추상 메서드, 디폴트 메서드는 private 키워드와 함께 사용할 수 없음)
 
private 메서드는 다음과 같이 두 가지로 나눌 수 있다.

  • private method
  • private static method

일반 private 메서드는 인터페이스를 구현한 객체가 필요하고, default method를 통해서만 해당 함수를 호출할 수 있다.
(private 키워드를 붙이면 해당 메서드는 해당 인터페이스 내부에서만 접근할 수 있기 때문에 default method를 통해 간접적으로 접근해야 한다.)
 
private static method는 인터페이스를 구현한 객체가 따로 필요하지 않고, default method 뿐만 아니라 static method에서 호출 가능하다.
static method 내에서는 static method만 호출 가능하다.
 
그렇다면 private method를 왜 사용할까?
default 메서드 또는 static 메서드 간의 코드 중복을 막기 위해 사용된다.
어떤 특정 코드가 여러 번 쓰인다면, 이를 private 메서드로 묶어서 사용할 수 있기 때문이다.
 

Private Method 예시

interface Ex {
    // private static 메서드
    private static void Common1() {
    	System.out.println("Common");
    }
    
    static void staticMethod1() {
    	System.out.println("hello1");
        Common1();
    }
    
    static void staticMethod2() {
    	System.out.println("hello2");
        Common1();
    }
}
interface Ex {
    // private 메서드
    private void Common2() {
    	System.out.println("Common");
    }
    
    default void defaultMethod1() {
    	System.out.println("hello1");
        Common2();
    }
    
    default void defaultMethod2() {
    	System.out.println("hello2");
        Common2();
    }
}

이 처럼 반복되는 구간을 묶어 사용하기에 적합하다.

'CS > Java' 카테고리의 다른 글

[Java] 라이브러리와 모듈 구현 과정 with 이클립스  (0) 2024.05.28
[Java] Nested Class 내부(중첩) 클래스, Nested Interface 내부(중첩) 인터페이스  (0) 2024.05.26
[Java] interface 인터페이스  (0) 2024.05.26
[Java] 상속 Inheritence - 4 (다운 캐스팅과 instanceof, abstract class 추상 클래스, sealed class)  (0) 2024.04.17
[Java] 상속 Inheritance - 3 (Type Conversion 형변환, Polymorphism 다형성)  (0) 2024.04.15
  1. Default Method
  2. Static Method
  3. Private Method
  4. Private Method 예시
'CS/Java' 카테고리의 다른 글
  • [Java] 라이브러리와 모듈 구현 과정 with 이클립스
  • [Java] Nested Class 내부(중첩) 클래스, Nested Interface 내부(중첩) 인터페이스
  • [Java] interface 인터페이스
  • [Java] 상속 Inheritence - 4 (다운 캐스팅과 instanceof, abstract class 추상 클래스, sealed class)
1in
1in
Love IT!1in 님의 블로그입니다.
1in
Love IT!
1in
전체
오늘
어제
  • 분류 전체보기 (52)
    • BackEnd (9)
      • Django (3)
      • AWS (0)
      • Error (2)
    • 문제 풀이 (7)
      • Baekjoon (7)
    • CS (36)
      • 자료구조 (17)
      • Java (11)
      • C언어 (1)
      • 알고리즘 (6)
      • 어셈블리어 (0)
      • Python (1)
    • 이것저것 (0)
      • 회고 (0)
      • 책 (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 연결리스트
  • 자료구조
  • 알고리즘
  • 자바
  • 큐
  • 상향식 분석
  • 라이브러리
  • avl tree
  • 링크드리스트
  • C언어
  • 인터페이스
  • 이중연결리스트
  • 이진트리
  • 모듈
  • 재귀
  • 하향식 분석
  • Queue
  • 재귀 분석
  • 레드블랙트리
  • 유클리드 호제법

최근 댓글

최근 글

hELLO· Designed By정상우.v4.5.2
1in
[Java] interface 인터페이스 메서드 종류(default, static, private)
상단으로

티스토리툴바

단축키

내 블로그

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

블로그 게시글

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

모든 영역

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

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