개발 일지/Java

[Java] 상속(Inheritance)

미숫가루설탕많이 2022. 12. 29. 15:17

 java 언어에서 상속이란, 기존의 클래스를 재활용하여 새로운 클래스를 작성하는 자바의 문법 요소이다. 객체가 정의되는 고전 상속에서, 클래스는 기존의 클래스로부터 속성과 동작을 상속받을 수 있다.

 

 가장 단순한 형태로 생각해본다면, 두 클래스를 상위 클래스와 하위 클래스로 나눠서 상위 클래스의 멤버(필드, 메서드, 이너 클래스)를 하위 클래스와 공유하는 것이다. 여기서 두 클래스를 서로 상속 관계에 있다고 하고 하위 클래스는 상속 클래스가 가진 모든 멤버를 상속받게 된다.

 

 예를 들어, 여러 사람의 클래스를 정의한다고 생각해보자.

 

/*
class 가수 {
    숨쉬기
    잠자기
    밥먹기
    노래하기
}

class 학생 {
    숨쉬기
    잠자기
    밥먹기
    공부하기
}
 */

 

 가수와 학생은 많은 공통점을 갖고 있는 것을 볼 수 있다. 갖고 있는 직업은 다르지만 사람이라면 공통적으로 숨을 쉬고 밥도 먹고 잠도 잔다는 것이다.

 

 여기서 상속 개념을 활용한다면 '사람'이라는 클래스를 정의해주면 위 코드처럼 공통적인 부분들은 일일이 쓰지 않아도 상위 클래스인 '사람'을 상속 받아 하위 클래스인 '가수'나 '학생'을 간단하게 작성할 수 있다.

 

/*
class 사람 {
    숨쉬기
    잠자기
    밥먹기
}

class 가수 extends 사람 {
    노래하기
}

class 학생 extends 사람{
    공부하기
}
 */

 

 위 코드와 같이 extends 키워드를 붙여서 상속받는 형태이다.

 

 만약 클래스나 상속을 쓰지 않았다면 사소한 수정 사항이라도 발생할 경우에 모든 코드를 일일이 찾아서 수정해야 하지만 상속을 쓰면 상속 받은 클래스만 수정하면 되므로 매우 유용하다고 할 수 있다.

 

 결론적으로 상속을 통해 클래스를 작성하면 코드를 재사용하기 때문에 보다 적은 양의 코드로 새로운 클래스를 작성할 수 있어서 코드의 중복을 제거할 수 있다. 또한, 코드를 공통적으로 관리할 수 있기 때문에 코드 추가나 수정이 편하다.

 

 유의할 점은, 자바의 객체 지향 프로그래밍에서는 단일 상속(single inheritance)만을 허용한다는 것이다. 다중 상속은 허용되지 않는다.

'개발 일지 > Java' 카테고리의 다른 글

[Java] 메서드 오버라이딩(Method Overriding)  (0) 2022.12.29
[Java] 상속/포함 관계  (0) 2022.12.29
[Java] 내부 클래스(Inner Class)  (0) 2022.12.28
[Java] this 와 this()  (0) 2022.12.28
[Java] 생성자(Constructor, ctor)  (0) 2022.12.28