상속이란?
상속이란, 기존의 클래스를 재사용하여 새로운 클래스를 작성하는 것
상속해주는 클래스 : 조상 클래스, 부모(parent) 클래스, 상위(super) 클래스, 기반(base) 클래스
상속 받는 클래스 : 자손 클래스, 자식(child) 클래스, 하위(sub) 클래스, 파생된(derived) 클래스
class Parent { }
class Child extends Parent { }
조상의 클래스를 확장(extend)한다는 의미로 해석할 수 있으며 이것이 상속에 사용되는 키워드가 'extends'인 이유이기도 하다.
- 생성자와 초기화 블럭은 상속되지 않는다. 멤버만 상속된다.
- 하위(sub) 클래스의 멤버 개수는 상위(super) 클래스보다 항상 같거나 많다.
- 하위 클래스의 인스턴스를 생성하면 상위 클래스의 멤버와 하위 클래스의 멤버가 합쳐진 하나의
인스턴스로 생성된다.
- JAVA에서는 오직 단일 상속만을 허용한다. 둘 이상의 클래스로부터 상속을 받을 수 없다.
- 모든 클래스의 조상은 Object 클래스이다.
클래스간의 관계
- 상속관계 : ~은~이다. (is-a 관계)
- 포함관계 : ~은~을 가지고 있다. (has-a 관계)
오버라이딩이란?
조상 클래스로부터 상속받은 메서드의 내용을 변경하는 것
오버라이딩의 조건
하위 클래스에서 오버라이딩하는 메서드는 상위 클래스의 메서드와
- 이름이 같아야 한다.
- 매개변수가 같아야 한다.
- 반환타입이 같아야 한다.
상위 클래스의 메서드를 하위 클래스에서 오버라이딩할 때
- 접근 제어자를 상위 클래스의 메서드보다 좁은 범위로 변경할 수 없다.
- 예외는 상위 클래스의 메서드보다 많이 선언할 수 없다.
- 인스턴스메서드를 static메서드로 또는 그 반대로 변경할 수 없다.
오버로딩 vs 오버라이딩 비교
오버로딩 (overloading) : 기존에 없는 새로운 메서드를 정희하는것 (new)
오버라이딩 (overriding) : 상속받은 메서드의 내용을 변경하는 것 (change, modify)
super 키워드
super는 자손 클래스에서 조상 클래스로부터 상속받은 멤버를 참조하는데 사용되는 참조변수이다.
상속받은 멤버와 자신의 멤버가 이름이 같을 때는 super를 붙여서 구별할 수 있다.
super() - 조상 클래스의 생성자
Object클래스를 제외한 모든 클래스의 생성자 첫 줄에 생성자,this() 또는 super(),를 호출해야 한다. 그렇지 않으면 컴파일러가 자동적으로 super(); 를 생성자의 첫 줄에 삽입한다.
'Backend > JAVA' 카테고리의 다른 글
[JAVA] 접근제어자 (Access Modifier) (0) | 2021.09.18 |
---|---|
[JAVA] static 변수와 static 메소드 (0) | 2021.09.18 |
[JAVA] 객체 지향 프로그래밍 (OOP) (0) | 2021.09.14 |
[JAVA] 이진 탐색, 이진 검색 (Binary Search) (0) | 2021.09.12 |
[JAVA] 2차원 배열을 1차원 배열로 변환 (0) | 2021.09.12 |