티끌모아 로키산맥 🏔
search
로ᄏl
배움에 끝은 없다... 개발 또한 그러하다.
Today
Yesterday
Java - extends, implements, abstract 차이
상속이라는 개념을 이론적으로 분명 학습했는데, 잘 안쓰다보니(직접 만들어 쓴적은 없다는 얘기... JpaRepository 인터페이스 같은 것은 자주 사용...) 그 개념을 자꾸 잊어먹어서 implements, extends 심지어 추상 클래스 ,메서드인(명칭만 기억하지 기능은 기억도 안나는 것 같다.. 반성한다) abstract 등 한번 기회 잡아서 다시 정리해야지하며 미뤘는데, 어쩌다보니 스터디원분이 상속 얘기를 꺼내면서, 매우 진땀을 흘렸다. 민망해서 밤에 이불킥 몇 번 하다가 내 선생님인 '구글'을 찾아봤다. 마침 간단하게 잘 요약해둔 블로그가있어서, 옮겨적어본다.
참고: https://velog.io/@hkoo9329/%EC%9E%90%EB%B0%94-extends-implements-%EC%B0%A8%EC%9D%B4
상속을 말하기전에 먼저 객체 지향 프로그래밍(OOP)의 특징을 알면 좋다.
OOP의 특징은 아래의 5가지이다.
상속과 인터페이스(계층성)
다형성, 사용편의성(모듈화)
캡슐화, 정보은닉
자료 추상화(모델링)
동적 바인딩
상속은 아래의 그림을 통해서 이해를 도울 수 있다.
각 상자는 모두 객체(Object)이고, 자바 용어로는 클래스이다.
이러한 계층을 표현하기 위해서 만들어진 것이 상속이다.
하위 객체는 상위 객체(부모)의 특징을 물려받는다.
또 다른 예로 변수또한 객체에 선언되어 있다면 물려받게 된다.
이 메소드 또는 변수를 '구현'하는가 그대로 '사용'하는가에 따라서 상속의 형태가 갈리게 된다.
extends
사실상 extends가 상속의 대표적인 형태다.
부모에서 선언 / 정의를 모두하여 자식은 메소드 / 변수를 그대로 사용할 수 있다.
'다중상속'을 지원하지 않는다.
Implements (interface 구현)
부모 객체는 선언만 하며 정의(내용)은 자식에서 오버라이딩(재정의)해서 사용한다.
(extends가 못하는) 다중상속을 대신해준다.
abstract
extends와 implements의 혼합, extends하되 몇 개는 추상 메서드로 구현되어 있다.
Java - Comparable vs Comparator (0) | 2020.08.03 |
---|---|
일급 컬렉션(First Class Collection)의 소개, 써야할 이유 (0) | 2020.05.27 |
J2SE,J2EE의 차이점 (0) | 2020.03.14 |
Java - Equals, Hashcode 메소드 (3) | 2019.12.15 |
Java - Java Code Convention (자바 코드 규약) (0) | 2019.12.04 |