오늘은 상속에 대해 정리해 보도록 하겠습니다.

     

    상속을 학습하기 전에 가볍게 클래스들의 관계에 대해 정리 하고 갈건데요.

     

    클래스들 간의 관계는 3가지로 정의 할 수 있습니다.

    • is a 관계 : 한 클래스가 다른 클래스를 구체 적으로 구현한 경우 / 대학생 is a 학생, 직업 is a 마법사
    • has a 관계: 한 클래스가 다른 클래스의 멤버변수가 되는 경우 / 비행기 has a 날개, 자동차 has a 바퀴
    • use a 관계: 한 클래스가 다른 클래스를 이용하는 경우 / 운전사 use a 자동차, 파일럿 use a 비행기

    이 세가지 에서 상속은 is a 관계가 성립되는 것이 변환된 것입니다.

    예를 들면 A라는 클래스가 구현한 속성과 기능을 B라는 클래스도 사용할 수 있도록 클래스들의 관계를 맺는 것이죠.

     

    상속을 하면 2가지 장점이 있습니다.

    • 코드의 재사용성 증가
    • 재사용성 증가로 인한 중복코드의 제거 -> 개발 시간 단축 및 가독성 증가

    그렇다면 상속 관계는 어떻게 구현하는 것일까요?

     

    상속 관계를 만들때도 2가지로 나누면 top - down 과 bottom -up 방식 으로 나눌 수 있을거 같은데요.

    • top - down : 특정 클래스를 통해 하위 클래스를 작성 합니다. /  예) 학생 -> 초등학생 , 중학생, 고등학생
    • bottom - up : 다수 클래스들 간의 공통점을 뽑아서 부모클래스로 작성 합니다. / 예) 트럭, 승용차, 버스 -> 자동차

    이런 식의 흐름으로 상속 관계를 만들고 extends 라는 키워드를 통해서 코드로 구현합니다.

    public class Truck extends Car {
    
    }

    이런식으로 트럭이 extends 키워드를 통해 Car 클래스에 있는 메서드와 코드를 사용할 수 있습니다.

    단. 생성자는 상속되지 않으며, extends 키워드를 이용한 다중상속은 불가합니다.

     

    일반적으로 부모 클래스의 멤버 변수는 접근 지정자로 protected를 사용하고, 만일 상속해 주기 싫은 멤버가 있다면 private를 사용해서 구현하면 됩니다.

     

    상속에 대해서 더 많은 내용들이 있지만 기초적인 부분은 이 정도만 적도록 하겠습니다.

     

    Posted by Zomder