[Java] interface method

2024. 3. 12. 00:32· IT/Java
목차
  1. abstract method
  2.  
  3. default method
  4. static method
  5. private method
728x90

abstract method

[public abstract] 리턴타입 메소드명(매개변수, ...);
  • 추상 메소드는 리턴 타입, 메소드명, 매개변수만 기술되고 중괄호를 붙이지 않는 메소드이다.
  • public abstract를 생략하더라도 컴파일 과정에서 자동으로 붙는다.
  • 내부의 모든 메서드는 추상 메소드로 정의한다.
  • 구현 클래스에서 추상 메소드 재정의 시 public보다 더 낮은 접근 제한으로 재정의할 수 없다.

 

default method

[public] default 리턴타입 메소드명(매개변수, ...) {...}
  • default 메소드를 추가하면 구현 클래스에서 필수로 메소드를 재정의 하지 않아도 된다.
  • 추상 메소드는 실행부(중괄호 {})가 없지만, 디폴트 메소드는 실행부가 있다.
  • 실행부에서는 상수 필드를 읽거나, 추상 메소드를 호출하는 코드를 작성할 수 있다.
  • 재정의시 public 접근 제한자를 붙이고, default 키워드를 생략한다.
  • 인터페이스 구현 후, 수정 과정에서 인터페이스 모든 구현체에게 수정 없이 광역으로 함수를 만들어주고 싶을 때 사용한다.

 

static method

[public | private] static 리턴타입 메소드명(매개변수, ...) {...}
  • 정적 메소드는 구현 객체가 없어도 인터페이스만으로 호출 가능하다.
  • 정적 메소드의 실행부를 작성할 때 상수 필드를 제외한 구현 객체가 필요한 인스턴스 메소드인 추상 메소드, 디폴트 메소드, private 메소드 등을 호출할 수 없다.

 

private method

구분 설명
private method 구현 객체가 필요한 메소드
private static method 구현 객체가 필요 없는 메소드
  • 로직을 공통화하고 재사용하기 위해 자바9 버전에서 추가된 메소드이다.
  • 인터페이스 내부에서만 돌아가는 코드로 구현한 클래스에서 사용하거나 재정의할 수 없다.
  • private 메소드는 default 메소드 안에서만 호출이 가능하며, private static 메소드는 staitc 메소드 안에서도 호출이 가능하다.
  • private 메소드는 디폴트와 정적 메소드들의 중복 코드를 줄여준다.

예제 코드

더보기
package ch08.sec07;

public interface Service {
    // 디폴트 메소드
    default void defaultMethod1() {
        System.out.println("Service.defaultMethod1");
        defaultCommon();
    }

    default void defaultMethod2() {
        System.out.println("Service.defaultMethod2");
        defaultCommon();
    }

    // private 메소드
    private void defaultCommon() {
        System.out.println("defaultMethod 중복 A");
        System.out.println("defaultMethod 중복 B");
    }

    // 정적 메소드
    static void staticMethod01() {
        System.out.println("Service.staticMethod01");
        staticCommon();
    }

    static void staticMethod02() {
        System.out.println("Service.staticMethod02");
        staticCommon();
    }

    // private 메소드
    private static void staticCommon() {
        System.out.println("staticMethod 중복 C");
        System.out.println("staticMethod 중복 D");
    }
}
package ch08.sec07;

public class ServiceExample {
    public static void main(String[] args) {
        // 인터페이스 변수 선언과 구현 객체 대입
        Service service = new ServiceImpl();
        // 디폴트 메소드
        service.defaultMethod1();
        System.out.println();
        service.defaultMethod2();
        System.out.println();
        // 정적 메소드
        Service.staticMethod01();
        System.out.println();
        Service.staticMethod02();
    }
}
package ch08.sec07;

public class ServiceImpl implements Service {
}

 

728x90
저작자표시 (새창열림)

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

[Java] 중첩 클래스(Nested Class)  (0) 2024.03.12
[Java] 타입 변환  (0) 2024.03.12
[Java] Interface 상수 필드  (0) 2024.03.12
[Java] Interface  (0) 2024.03.11
[Java] abstract class & method  (0) 2024.03.08
  1. abstract method
  2.  
  3. default method
  4. static method
  5. private method
'IT/Java' 카테고리의 다른 글
  • [Java] 중첩 클래스(Nested Class)
  • [Java] 타입 변환
  • [Java] Interface 상수 필드
  • [Java] Interface
Huitopia
Huitopia
Huitopia
summary
Huitopia
  • 분류 전체보기 (170)
    • IT (156)
      • Java (72)
      • JavaScript (11)
      • TypeScript (4)
      • Node.js (7)
      • Front (10)
      • Database (2)
      • Algorithm (28)
      • etc. (22)
    • Bootcamp (14)
      • WIL (14)

블로그 메뉴

  • GitHub
  • TIL

공지사항

인기 글

태그

  • array
  • 자바
  • Method
  • 자동타입변환
  • node.js
  • CodingTest
  • 연산자
  • 타입변환
  • WEB
  • Java
  • 스파르타코딩클럽
  • HTML
  • 상속
  • TypeScript
  • 모던자바스크립트
  • wil
  • css
  • python
  • 항해99
  • jQuery
  • CLASS
  • Interface
  • programmers
  • 회고록
  • javascript
  • 강제타입변환
  • 인터페이스
  • Spring
  • 클래스
  • 웹개발종합반

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.2
Huitopia
[Java] interface method
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

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

블로그 게시글

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

모든 영역

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

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