2023. 6. 15. 16:16ㆍJava/객체지향
1. 상속의 정의와 장점
- 상속: 기존의 클래스를 재사용하여 새로운 클래스를 작성하는 것
- 상속의 장점
상속을 통해 클래스를 작성하면 보다 적은 양의 코드로 새로운 클래스를 작성할 수 있고 코드를 공통적으로 관리할 수 있기 때문에 코드의 추가 및 변경이 용이하다
코드의 재사용성을 높히고 코드의 중복을 제거하여 프로그램의 생산성과 유지보수에 크게 기여한다
- 상속 구현법
class Child extends Parent { ... }
- 상속해주는 클래스 -> 조상클래스, 부모클래스, 상위 클래스, 기반(base)클래스
상속 받는 클래스 -> 자손클래스, 자식클래스, 하위클래스, 파생(derived)클래스
- 상속 특징
생성자와 초기화블럭은 상속되지 않는다. 멤버만 상속된다
자손클래스의 멤버개수는 조상클래스보다 항상 같거나 많다
자손클래스의 인스턴스를 생성하면 조상클래스의 멤버와 자손 클래스의 멤버가 합쳐진 하나의 인스턴스로 생성된다 (조상클래스 생성자 실행 -> 자손 클래스 생성자 실행)
2. 클래스간의 관계 - 포함관계
- 포함: 클래스 간의 포함관계를 맺어준다는 것은 한 클래스의 멤버변수로 다른 클래스 타입의 참조변수를 선언하는 것을 뜻한다.
- 예를 들어 Car클래스를 작성할 때, Car클래스의 단위구성요소인 Door, Wheel 등의 클래스를 미리 작성해놓고 이들을 Car클래스의 멤버변수로 선언하여 포함관계를 맺어주면
클래스를 작성하는 것도 쉽고 코드도 간결해서 이해하기 쉽다.
3. 클래스간의 관계 결정하기
- 클래스를 작성하는 데 있어서 상속관계를 맺어줄 것인가 포함관계를 맺어줄 것인지 결정하는 것은 때때로 혼란스러울 수 있다.
- 관계 결정하기: Is-a 관계 -> 상속, Has-a 관계 -> 포함
1) Car is a door -> X
Car has a door -> O ==> Car와 door는 포함관계이다
2) Car is a vehicle -> O ==> Car와 vehicle은 상속관계이다
Car has a vehicle -> X
4. 단일상속
- 단일상속: 둘 이상의 클래스로부터 상속을 받을 수 없다
- 다른 객체지향언어와는 다르게 자바는 오직 단일상속만을 허용한다.
- 단일상속이 불편한 점도 있으나 클래스간의 관계가 보다 명확해지고 코드를 더욱 신뢰할 수 있게 만들어 준다는 점에서 다중상속보다 유리하다
5. Object클래스 - 모든 클래스의 조상
- Object클래스는 모든 클래스의 상속계층도 최상위에 있는 조상클래스이다.
- 다른 클래스로부터 상속 받지 않는 모든 클래스들은 자동적으로 Object클래스로터부 상속받게 한다
- 그래서 자바의 모든 클래스들은 Object클래스의 멤버들을 상속 받기 때문에 Object클래스로 정의된 멤버들을 사용할 수 있다. (toString(), equals()등..)