Programming Languages/Java

[Java] 자바 상속 구현 / extends, implements의 차이? / 개념과 사용법 정리

Hannana. 2024. 2. 8. 11:48
반응형

자바는 객체 지향 언어다.

객체 지향 언어 중 가장 큰 특징은 <상속> 인데,

이러한 상속을 구현하는 형태를 간단히 정리하고자 한다.

 

(객체 지향 언어에 대한 개념은 아래 글을 참고하면 좋다.)

 

[JAVA] 객체 지향 언어(Object-Oriented Programming, OOP) 란?

자바는 객체 지향 언어(Object-Oriented Programming, OOP)이다. 객체 지향 언어(Object-Oriented Programming, OOP) 란? 현실 세계의 개체를 프로그램으로 표현하고 이러한 개체 간의 상호 작용을 통해 소프트웨어

hansjour.tistory.com

 

 


 

부모가 자식에게 물려주는 모습..

 

 

1. extends와 implements 개념 설명

자바에서 클래스와 인터페이스 간의 관계를 나타내는 방식이다.



1) extends

:  하나의 클래스가 다른 클래스의 기능과 특성을 확장하여 사용할 수 있도록 한다.

자식 클래스가 부모 클래스의 모든 멤버(필드, 메서드)를 상속받으며, "단일 상속"만 지원하기 때문에 하나의 클래스는 하나의 클래스만 직접적으로 상속할 수 있다.

 

class Parent {
    // 부모 클래스의 멤버
}

class Child extends Parent {
    // 자식 클래스에서 추가적인 멤버를 정의할 수 있음
}

 

 

2) implements

:  인터페이스를 구현하는 것을 나타낸다. 특정 인터페이스의 규약을 모두 구현하고 조건을 만족하여 클래스가 해당 인터페이스의 동작을 제공하는 것이다. 클래스는 여러 인터페이스를 구현할 수 있다는 것이 특징이다.

 

interface InterfaceA {
    void methodA();
}

interface InterfaceB {
    void methodB();
}

class MyClass implements InterfaceA, InterfaceB {
    public void methodA() {
        // InterfaceA의 메서드 구현
    }

    public void methodB() {
        // InterfaceB의 메서드 구현
    }
}

 

 

 

 

 

 

2. extends와 implements 차이점


-extends는

  • 클래스 간의 상속 관계를 나타내며, 단일 상속만 가능
  • 부모에서 선언/정의를 모두함
  • 자식은 오버라이딩 할 필요 없이 부모의 메소드/변수를 그대로 사용할 수 있다.

-implements는

  • 클래스가 인터페이스의 규약을 구현하는 것을 나타내며, 다중 인터페이스 구현이 가능
  • 부모 객체는 선언만 하며, 정의는 반드시 자식이 오버라이딩해서 사용한다.
  • 자식 클래스는 부모의 기능을 다시 정의해서 사용해야한다.
  • Java와 c#의 인터페이스 상속은 상속 그 자체보다는 계약/분류의 의미가 강함

 

 

 

2. 결론

extends는 클래스 간의 계층 구조를 형성하는 데 사용되고,

implements는 클래스가 인터페이스의 동작을 제공하는 데 사용된다고 볼 수 있다.


상속이라는 관점에서 둘은 비슷해보이지만

사용하는 형태가 다르기 때문에 기억해두는 편이 좋을 것 같다!

 

참고로 둘의 형태를 결합한 abstract 개념도 있으나 

그건 생략하고 정리했다.

 

개발 시 혹은 개인 공부 시에 참고하면 좋을 것 같다.

 

 

 

 

반응형