java를 사용해본 분들이라면 상속의 개념에 대해서는 들어봤을것이다.
그리고 사용해보지 않으신분들도 상속이라는게 뭔지는 알것이다.
프로그래밍언어에서 말하는 상속이란,
부모 클래스와 자식 클래스 사이에서 자식 클래스에서 부모 클래스의 기능을 가져다 쓰는것을 상속이라고 한다.
자바의 큰 특징중 하나는 OOP라는것인데, 이것은 객체지향프로그래밍의 약자이다.
객체 지향프로그래밍에서의 상속은 가장 당연하게 중요한 요소 중 하나이다.
그럼 implements랑 extends가 어떻게 다른지를 확인해보자.
둘다 사용법은 마찬가지로 클래스를 구현하면서 이어서 붙여주는 방식이다.
implements
부모의 클래스를 현재 자식의 클래스 내에서 한번 재정의 해줄 필요가 있다.
우리가 아는 상속이라면 그냥 가져다 써야하는데 그것이 아니라 재정의를 해주면 그게 무슨 상속이냐 라고 할수도 있지만.
이것이 상속이라고 java에서는 정의를 내려놓았다.... :)
extends
사실 이게 우리가 알고 있는 상속에 좀더 가깝다.
부모의 메서드를 그대로 사용할수 있으며 오버라이딩 필요없이 부모에 구현되어있는것을 직접 사용가능하다.
하지만 extends는 단 하나의 클래스만 상속이 가능하다.
결론을 말해주면
일반클래스와 추상클래스를 상속할때는 extends를 사용하고 interface를 상속할 때는 implements를 사용한다.
class가 interface를 상속받을땐 implements가 될 것이고, interface가 class를 상속받을땐 extends를 사용하게 된다.
상속을 위해서 오버라이딩이 없는 extends를 사용하지만 다중 상속을 위해서는 implements를 사용해야하고,
implements는 클래스 단위가 아닌 interface를 상속할때 사용이 되므로,
정확한 개념의 이해가 필요할듯 하다.
마무리는 사진을 보면서 이해를 하도록 하겠다.
클래스는 단일 클래스 상속을 위해 extends, 인터페이스를 상속하기 위해는 implements
인터페이스는 인터페이스를 상속하기 위해 extends 를 사용한다.
'IT > Java' 카테고리의 다른 글
JPA (getById / findById) 차이 (40) | 2022.03.18 |
---|---|
Spring 에서 IOC, AOP, DI 에 대하여 (54) | 2022.03.09 |
JDK , JRE , JVM 차이? (27) | 2022.02.24 |
JPA N+1 이란? (19) | 2022.02.11 |
SpringBoot/JPA part.10 (36) | 2022.02.08 |
댓글