extends와 implements의 차이

이규훈·2023년 5월 28일

extendsimplements는 두 개의 키워드로, 자바의 상속과 인터페이스 구현을 관리하는데 사용됩니다. 두 키워드의 주요 차이점은 다음과 같습니다:

1. extends:

extends 키워드는 클래스가 다른 클래스를 상속할 때 사용됩니다. 클래스가 상속받는 클래스를 부모 클래스, 슈퍼 클래스, 또는 기본 클래스라고도 부릅니다. 반대로 상속받는 클래스를 자식 클래스, 서브 클래스, 또는 파생 클래스라고도 부릅니다.

상속을 통해 부모 클래스의 속성과 메소드를 재사용하고 확장하는 것이 가능합니다. 이는 코드의 중복을 줄이고, 모듈성과 유지 관리성을 향상시킬 수 있습니다.

자바에서는 다중 상속을 지원하지 않습니다. 즉, 한 클래스는 하나의 슈퍼 클래스만 가질 수 있습니다.

public class Animal {
    public void eat() {
        System.out.println("Eating...");
    }
}

public class Dog extends Animal {
    public void bark() {
        System.out.println("Barking...");
    }
}

위의 예제에서 Dog 클래스는 Animal 클래스를 상속합니다. 따라서 Dog 인스턴스는 eat 메소드와 bark 메소드 모두 사용할 수 있습니다.

2. implements:

implements 키워드는 클래스가 인터페이스를 구현할 때 사용됩니다. 인터페이스는 메소드와 상수만을 정의할 수 있는 추상 타입입니다. 인터페이스의 메소드는 모두 public이며, 본문을 가지지 않습니다(자바 8부터는 default 메소드와 static 메소드에 본문을 가질 수 있습니다).

인터페이스를 구현하는 클래스는 인터페이스에서 정의한 모든 메소드를 구현해야 합니다. 그리고 자바에서는 한 클래스가 여러 인터페이스를 구현할 수 있습니다.

interface Drivable {
    void drive();
}

interface Insurable {
    void insure();
}

public class Car implements Drivable, Insurable {
    @Override
    public void drive() {
        System.out.println("Driving...");
    }

    @Override
    public void insure() {
        System.out.println("Insuring...");
    }
}

위의 예제에서 Car 클래스는 Drivable 인터페이스와 Insurable 인터페이스를 구현합니다. 따라서 Car 클래스는 이 두 인터페이스의 모든 메소드인 drive 메소드와 insure 메소드를 구현해야 합니다.


요약

extends -> 클래스를 상속 할때 사용
implements -> 클래스가 인터페이스 구현할때 사용한다.

profile
개발취준생

0개의 댓글