본문 바로가기

Java

[JAVA]상속(Inheritance)의 개념

현실에서 말하는 상속은 부모가 자식에게 무언가를 물려주는 행위를 말한다. 자식들은 상속을 통해 상속받은 것을 이용할 수 이용할 수 있게 된다. 객체 지향 프로그램에서는 이 상속 개념을 활용한다. 부모 클래스의 멤버를 자식 클래스에 물려주어 자식 클래스에서 부모 클래스의 멤버를 사용할 수 있게 한다. 부모 클래스와 자식 클래스는 각각 상위 클래스와 하위 클래스라고 부르기도 한다.

 

예를 들어 부모 클래스에 메소드 1, 필드 2가 있고 자식 클래스에 메소드 4, 필드 5가 있다고 해보자. 이렇게 되면 자식 클래스에서는 메소드 4, 필드 5 뿐만 아니라 부모 클래스로부터 메소드 1과 필드 2를 물려받기 때문에 메소드 1과 필드 2를 자식 클래스에서 사용 가능하다.

 

상속의 활용

상속은 대체적으로 이미 만들어진 완전한 클래스를 재사용해서 새로운 클래스를 만들기 위해 사용한다. 예를 들어 경찰의 경우 제압봉을 들고 있는 경찰이 있을 수 있고 총을 든 경찰, 방패를 들고 있는 경찰이 있을 수 있다. 이 경우에 각각 다른 새로운 클래스를 만드는 것이 아닌, 이미 만들어진 경찰 클래스가 있다면 이 클래스를 재사용해 제압봉을 든 경찰 클래스, 총을 든 경찰 클래스, 방패를 든 경찰 클래스를 만든다. 이렇게 하면 코드의 중복이 대폭 감소하게 된다.

 

예외

상속을 한다고 해서 부모의 모든 클래스를 물려받는 것은 아니다. 부모 클래스에서 private 접근 제한을 갖는 필드와 메소드는 상속 대상에서 제외된다. 만약 부모 클래스와 자식 클래스가 각각 다른 패키지에 존재한다면 default 접근 제한을 갖는 필드와 메소드도 상속 대상에서 제외된다.