인터페이스

MIN·2023년 11월 13일

Java

목록 보기
16/36
post-thumbnail

학원 수업내용 복습

🍊 인터페이스란?

인터페이스는 추상클래스의 일종으로 인터페이스를 상속받기 위해서는 extends가 아닌 implements를 써야한다.

추상클래스와 다른점으로

  • 인터페이스의 모든 메서드는 public abstract이다.
    즉, 모든 메서드는 추상메서드다.

    (예외적으로 내부에서만 사용할 수 있도록 private를 붙이면 추상메서드가 아니어도 작성 가능하다)

  • 인터페이스의 모든 필드는 public static final이다.

  • 인터페이스는 다중 상속이 가능하다.

  • 모든 메서드가 추상메서드이기 때문에 public abstract를 생략할 수 있다.


🍊 람다식 표현

만약 인터페이스의 추상메서드가 하나만 있다면 람다식으로 객체를 생성할 수 있다
(이때, 추상메서드를 하나만 가지는 인터페이스를
함수형 인터페이스(FunctionalInterface)라고 한다)

💡 람다식 표현 쓰는 방법

(매개변수) -> { 함수 내용 }

  • 매개변수가 1개라면 () 안의 매개변수 생략 가능
  • 함수 내용이 1줄이라면 {}를 생략하고 내용을 쓸 수 있음
  • 함수 내용이 1줄이면서 return이면 return도 생략해야 한다

람다식은 익명클래스에 비해 문법이 간결하기 때문에 자주 사용한다!


interface USB {	// 인터페이스 USB
	/*public abstract*/ void onConnect();
    // 추상메서드로 앞에 public abstract생략 가능
}

class PC {
	void connect(USB ob) {	// 원래 자료형이 무엇이든 PC에 연결되면
		ob.onConnect();		// 장치 내부에 연결 후 작동 수행
	}
}

public class Ex07 {
	public static void main(String[] args) {
		PC pc = new PC();

// 1) 람다식 표현으로 객체생성
//		USB mouse = () -> System.out.println("마우스 연결됨");

// 2) 익명클래스로 객체생성
		USB mouse = new USB() {
			@Override
			public void onConnect() {
				System.out.println("마우스 연결됨");
			}
		};
	pc.connect(mouse);
    // 1), 2) 모두 같은 결과를 출력한다.
}

맨 아래쪽을 보면 주석처리되어 있기는 하지만 람다식표현의 코드가 있다.
바로 아래에는 익명클래스로 만든 객체가 똑같이 있는데 코드길이가 람다식보다 길어서 람다식 표현을 더 많이 사용한다.

인터페이스의 추상메서드가 1개라서 사용이 가능했으며,
매개변수는 있지 않아 ( )안이 비어있고, 함수내용이 출력문 1줄로 끝나기 때문에 중괄호 { }도 생략되었다.

profile
기초부터 시작하는 감쟈 ※ 소개글 확인해주세요!! ※

0개의 댓글