충분히 쌓여가는
8.7 private 메소드 - private 메소드, private 정적 메소드 본문
인터페이스의 상수 필드, 추상 메소드, 디폴드 메소드, 정적 메소드는 모두 public 접근 제한을 갖는다
이 멤버들을 선언할 때는 public을 생략하더라도 컴파일 과정에서 public 접근 제한자가 붙어 항상 외부에서 접근이 가능하다
인터페이스 외부에서 접근할 수 없는 private 메소드 선언도 가능
private 메소드 | 구현 객체가 필요한 메소드 |
private 정적 메소드 | 구현 객체가 필요 없는 메소드 |
private 메소드는 디폴트 메소드 안에서만 호출이 가능
private 정적 메소드는 디폴트 메소드뿐만 아니라 정적 메소드 안에서도 호출 가능
private 메소드의 용도
디폴트와 정적 메소드들의 중복 코드를 줄이기 위함
package ch08.sec07;
public interface Service {
//디폴드 메소드
default void defaultMethod1() {
System.out.println("defaultMehtod1 종속 코드");
defaultCommon();
}
default void defaultMethod2() {
System.out.println("defaultMehtod2 종속 코드");
defaultCommon();
}
//private 메소드
private void defaultCommon() {
System.out.println("defaultMethod1 중복 코드A");
System.out.println("defaultMethod2 중복 코드B");
}
//정적 메소드
static void staticMethod1() {
System.out.println("staticMethod1 종속 코드");
staticCommon();
}
static void staticMethod2() {
System.out.println("staticMethod2 종속 코드");
staticCommon();
}
//private 정적 메소드
private static void staticCommon() {
System.out.println("staticMethod 중복 코드C");
System.out.println("staticMethod 중복 코드D");
}
}
package ch08.sec07;
public class ServiceImpl implements Service {
}
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.staticMethod1();
System.out.println();
Service.staticMethod2();
System.out.println();
}
}
defaultMehtod1 종속 코드
defaultMethod1 중복 코드A
defaultMethod2 중복 코드B
defaultMehtod2 종속 코드
defaultMethod1 중복 코드A
defaultMethod2 중복 코드B
staticMethod1 종속 코드
staticMethod 중복 코드C
staticMethod 중복 코드D
staticMethod2 종속 코드
staticMethod 중복 코드C
staticMethod 중복 코드D
'이것이 자바다 > 08 인터페이스' 카테고리의 다른 글
8.9 인터페이스 상속 (0) | 2024.04.03 |
---|---|
8.8 다중 인터페이스 구현 (0) | 2024.04.03 |
8.6 정적 메소드 (0) | 2024.04.03 |
8.5 디폴트 메소드 (0) | 2024.04.03 |
8.4 추상 메소드 - public abstract (0) | 2024.04.03 |