상속 (Inheritance)
- 기존 클래스의 자산(멤버)을 자식 클래스에서 재사용하기 위한 것
- 기존 클래스의 멤버를 물려 받기 때문에 코드의 절감
- 부모의 코드를 변경하면 모든 자식들에게도 적용 → 유지보수에 용이
- 상속을 적용하는 법
- extends 키워드 사용
- public class Person { String name; void eat() {} void jump() {} } public class SpiderMan extends Person { boolean isSpider; void fireWeb() {} }
- UML로 표현
- 실선 + 화살표를 이용하여 Is a 관계 표현
- 상속의 관계는 is a 관계라고 함
- spiderman is a Person, Person is a Object
- 자바는 단일 상속(Single Inheritance) 만 지원
- 다중 상속의 경우 여러 클래스의 기능을 물려받을 수 있으나 관계가 매우 복잡해짐
- ex) 동일한 메소드가 두 부모에게 있다면 자식은 어떤 메서드를 쓸지 판단하기 어려움
- 대신 interface와 포함 관계(has a)로 단점을 극복
포함 관계 (has a)
- 상속 이외에 클래스를 재활용하는 방법
- 2개 이상의 클래스에서 특성을 가져올 때 하나는 상속, 나머지는 멤버 변수로 처리
- UML로 표현
Static Method의 상속 가능 여부
- static method는 Override가 되지 않음
- Override가 되는 것 처럼 보이지만 hiding이라고 함