컴퓨터공학 💻 도서관📚

Part2. 3-14 인터페이스의 여러가지 요소(상수, 메서드) 본문

✅🌲강의 복습 노트/패캠 JavaSpring 강의,코드 복습

Part2. 3-14 인터페이스의 여러가지 요소(상수, 메서드)

들판속초록풀 2025. 6. 12. 20:51

상수

 *  모든 변수상수변환 된다  ( public static final )

double PI = 3.14;
int ERROR = -999999999;

 

 

추상 메서드

 *  선언된 모든 메서드추상 메서드 ( public abstract )

 


디폴트 메서드 (자바 8 이후)

 *  구현을 가지는 메서드, 인터페이스를 구현하는 클래스들에서 공통으로 사용할 수 있는 기본 메서드

 *  default 키워드 사용

 *  (1)구현 코드를 가지고 ,  (2)인스턴스가 생성된 경우에만 사용할 수 있다.

default void description() {     // default 키워드 사용
	System.out.println("정수 계산기를 구현합니다.");
	myMethod();
}

 

 *  구현하는 클래스에서 재정의 할 수 있다.

 *  인터페이스를 구현한 클래스의 (2)인스턴스가 생성 되어야 사용 가능함

@Override
public void description() {
	System.out.println("CompleteCalc에서 재정의한 default 메서드");
	//super.description();
}

 

인터페이스를 implementation 하는 클래스에서 같은 메서드를 계속 중복해서 구현해야 되는 일들이 발생을 하니까
인터페이스가 이 메서드는 기본적으로 제공한다라 취지로 디폴트 메서드를 제공하게 되었다.

 

그렇다고 해서 이 메서드를 그냥 쓸 수 있는 건 아니고 (1)클래스가 implementation 했을 때 사용할 수 있다.

 


정적 메서드 (자바 8 이후)

 *  인스턴스 생성과 상관 없이 인터페이스 타입으로 사용할 수 있는 메서드 (복습 :  data영역은  힙 메모리보다  먼저 생성된다.)

 *  정적 메서드가 선언이 됐으면 인터페이스에서 이 메서드는 기본적으로 제공을 하고
      implementaion이 되지 않더라도 인터페이스 타입으로 직접 호출해서 사용할 수 있다. 

 *  이렇게 제공이 되는 이유는  기존에 구현 코드가 하나도 없다고 했을 때  인터페이스가 기본적으로 제공해야 되는
      기능을 구현하는 클래스들에서 계속 반복적으로 구현을 했는데
       하나의 인터페이스가 있고 그거를 구현하는 클래스가 10개다 라고 하면 그 10개의 클래스가 똑같은 메서드를 다 구현하는 건           좀 오버헤드이다. 그래서 기본적으로 이 인터페이스가 제공해야 되는 기능을 구현할 수 있게 기능을 만들어 놓은 것이다. 

static int total(int[] arr) {  // static 키워드 사용
	int total = 0;
		
	for(int i: arr) {
		total += i;
	}
	mystaticMethod();
	return total;
}

 


private 메서드 (자바 9 이후)

 *  인터페이스를 구현한 클래스에서 사용하거나 재정의 할 수 없음

 *  인터페이스 내부에서만 사용하기 위해 구현하는 메서드

 *  default 메서드static 메서드에서 사용

private void myMethod() {
	System.out.println("private method");
}
	
private static void mystaticMethod() {
	System.out.println("private static method");
}

 

 

 

 

 

 

Comments