상속 (相續) : 일정한 친족 관계가 있는 사람 사이에서, 다른 사람에게 재산에 관한 권리와 의무의 일체를 이어 주거나, 다른 사람으로부터 그 권리와 의무의 일체를 이어받는 일.
살아가면서 익히 들어본 상속. 자바에도 위와 같은 뜻의 상속이란 개념이 존재한다.
자바에서는 부모 클래스와 자식 클래스가 존재하는데 자식 클래스가 부모 클래스에 상속을 받을 경우 부모 클래스에 기능을 사용할 수 있고 자식 클래스에 있는 기능도 사용할 수 있다. 즉, 한마디로 코드를 물려받는다고 생각하면 된다.
상속 해주는 클래스를 부모클래스 또는 Super Class라고 부르며, 상속을 받는 클래스는 자식클래스 또는 Sub Calss라고 부를 수 있다.
상속을 하기 위해선 extends 라는 키워드를 사용해야하며 표현법은 아래와 같다.
// [ 표현법 ]
public class 자식클래스 extends 부모클래스 { }
// Ex)
public class child extends parent{ }
// child 클래스는 parent 클래스를 상속받았다.
상속의 특징
- 보다 적은 양의 코드로 새로운 클래스들을 매번 작성 가능하다.
- 부모 클래스는 여러 개의 자식 클래스에게 상속이 가능하다.
- 중복된 코드를 공통적으로 관리하기 때문에 새로운 코드를 추가하거나 수정할 때 용이하다. ("생산성" 과 "유지보수" 에 크게 기여한다.)
상속 시 주의사항
- 자바에서는 "다중 상속" 이 불가능하다. 즉, "단일 상속" 만 가능하다. (
애석하게도부모가 두 명일 수 없다.)
super 키워드는 자식 클래스에서 부모 클래스를 가리킬 때 사용하는 키워드다. 주로 부모 클래스의 필드에 접근, 메소드를 호출할 때 사용한다.
오버라이딩(overriding)이란 부모 클래스에서 상속받은 자식 클래스가 부모 클래스에 기능을 그대로 사용하는 게 아니라 자식 클래스에서 자신에 맞게 기능을 재정의 하고 사용하는 것을 의미한다.
오버라이딩의 성립 조건
- 부모메소드의 메소드명과 동일해야 한다.
- 매개변수의 자료형, 갯수, 순서가 모두 동일해야 한다. (매개변수명과는 무관하다.)
- 반환형이 동일해야한다.
- 접근제한자가 부모메소드와 같거나 공유 범위가 더 커야 한다.