컴퓨터공학 💻 도서관📚
Part2. 3-14 인터페이스의 여러가지 요소(상수, 메서드) 본문
상수
* 모든 변수는 상수로 변환 된다 ( 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");
}
'✅🌲강의 복습 노트 > 패캠 JavaSpring 강의,코드 복습' 카테고리의 다른 글
Part2. 3-16 객체 코딩으로 복습하기 1 (0) | 2025.06.16 |
---|---|
Part2. 3-15 여러 인터페이스 구현하기, 인터페이스의 상속 (1) | 2025.06.13 |
Part2. 3-13 인터페이스를 활용한 다형성 구현 (dao 구현하기) (0) | 2025.06.12 |
Part2. 3-12 인터페이스는 왜 쓰는가? (2) | 2025.06.10 |
Part2. 3-11 인터페이스(interface) (1) | 2025.06.09 |