[JAVA] extends와 implements의 차이

SCY·2023년 1월 30일

스프링을 공부하며 잊고 있던 자바 문법 떠올려보기

오늘은 그 중에서도 implements에 대해 공부해보겠다.
implements를 알기 전 extends를 알아놓으면 도움이 될 듯.

extends

  • 상속의 대표적인 형태이다.
  • 부모 class에서 선언된 변수 및 함수를 그대로 사용 가능하다.
  • 다중 상속이 불가능하다.
class Vehicle {
        protected int speed = 3;
        public int getSpeed() {
            return speed;
        
        public void setSpeed(int speed) {
            this.speed = speed;
        }
}

Car가 Vehicle을 그대로 물려받는다.

class Car extends Vehicle {
    public void printspd(){
    	System.out.println(speed);
    }
}

implements

  • interface를 상속받는다.
  • interface에 선언된 함수들은 전부 override(재정의)해야 한다.
  • 다중 상속이 가능하다.
public interface MemberRepository {
    Member save(Member member);
    Optional<Member> findById(Long id);
    List<Member> findAll();
}

위에서 선언된 interface를
아래의 코드에서 구현한다 생각하면 됨.

public class MemoryMemberRepository implements MemberRepository{
    @Override
    public Member save(Member member) {
        member.setId(++sequence);
        return member;
    }

    @Override
    public Optional<Member> findById(Long id) {
        return Optional.ofNullable(store.get(id));
    }
    
    @Override
    public List<Member> findAll() {
        return new ArrayList<>(store.values());
    }
}
profile
성장 중독 | 서버, 데이터, 정보 보안을 공부합니다.

0개의 댓글