[Java] Interface

2S·2023년 2월 19일

Java

목록 보기
1/2
post-thumbnail

여러 부모 클래스로부터 상속을 받을 수 있다면 다양한 동작을 수행할 수 있으나, 메소드의 출처가 모호해지는 등의 문제가 발생할 수 있다.

이러한 이유들로 Java에서는 다중 상속을 지원하지 않는다.

하지만 다중 상속을 통한 이점들은 충분히 매력적이기에, Java는 Interface를 통해 다중 상속을 지원하고 있다.

Interface는 다른 클래스를 작성할 때 기본이 되는 틀을 제공하고, 다른 클래스 사이의 중간 매개 역할까지 담당한다.

다른 클래스 작성 시의 기본 틀 + 다른 클래스 사이의 중간 매개 역할 = Interface

'다른 클래스 사이의 중간 매개 역할'이라는 설명이, 게임 속에서 유저와 프로그램 사이의 중간 역할을 수행하는 '인터페이스'와 맥락을 같이 하고 있음을 확인할 수 있다.

Interface와 Abstract class의 구조를 보면 꽤나 비슷하다고 생각할 수 있다.

Abstract class는 추상 메소드 + 생성자, 필드, 일반 메소드를 포함할 수 있으나, Interface는 추상 메소드와 상수만을 포함할 수 있다.

Abstract class

public abstract class animal {
	String name;
    int age;
    
    public animal(String name) {
    	this.name = name;
        this.age = 0;
    } // 생성자
    
    public abstract void bark(); // 추상 메소드
    public void eat() {
    	System.out.println("Yummy.");
    }
}

Interface

import hello.hellospring.domain.Member;
import java.util.List;
import java.util.Optional;

public interface MemberRepository {
    Member save(Member member);
    Optional<Member> findById(Long id);
    Optional<Member> findByName(String name);
    List<Member> findAll();
}
profile
C. Kim / Back-End

0개의 댓글