[Java] 상속 : 서브 클래스(sub class)와 슈퍼 클래스(super class)

Haeun Noh·2023년 4월 15일
1

JAVA

목록 보기
1/8
post-thumbnail

0415


학교 시간에 상속에 관해 배우게 되었습니다.
이 글을 통해 배운 것들을 정리하고 이해하고자 작성합니다.



상속 (inheritance)

자바에는 상속이라는 개념이 있습니다.

상속은 물려받는 것 아닌가요?
맞습니다! 자바의 상속도 똑같이 부모가 자식에게 물려주는 것입니다.

상속이란 부모클래스에 만들어진 필드, 메서드를 자식클래스가 물려받는 것을 말한다.

상속을 하게 되면 동일한 특성을 재정의할 필요가 없어 자식 클래스가 간결해지며 코드의 효율성 또한 올라가게 됩니다.


상속이 없는 경우인 위의 그룹들은 각각의 클래스에 말하기 먹기 걷기 잠자기라는 멤버가 중복되어 있습니다.
이렇게 중복되는 멤버는 메모리 낭비뿐만 아니라 효율성도 매우 떨어지게 되죠!

따라서 상속을 이용한 경우인 아래의 그룹들과 같은 구조로 멤버변수를 상속받아야 합니다.
공통 기능인 말하기 먹기 걷기 잠자기의 멤버변수를 Person클래스에 정의한 뒤 Student클래스에 Person클래스를 상속하면 Student클래스도 Person의 멤버를 사용할 수 있게 할 수 있습니다!

단, Person클래스는 Student클래스의 멤버변수인 '공부하기'를 사용할 수 없습니다.

서브클래스는 부모클래스의 멤버변수와 메서드에 접근해 사용할 수 있지만 부모클래스는 서브클래스에 접근할 수 없습니다.

반대로 하면 Student가 부모인 StudentWorker클래스는 공무하기 멤버에 접근하여 사용할 수 있지만 StudentStudentWorker클래스의 일하기 멤버에 접근이 불가능하게 되겠죠!



상속의 장점

이렇게 상속을 하게 되면 장점이 세 가지가 생깁니다.

  1. 클래스의 간결화
    멤버변수의 중복 작성이 불필요해지며 코드가 간결해지게 됩니다.

  1. 클래스 관리 용이
    클래스들이 계층적으로 분류되게 되며 클래스를 관리할 때 용이해지게 됩니다.

  1. 소프트웨어의 생산성 향상
    중복된 멤버변수나 메서드가 없기 때문에 이미 사용했던 클래스를 다시 재사용할 수도 있고 새로운 클래스를 생성할 때 이미 했던 멤버와 메서드를 재선언하지 않아도 되므로 작성 속도 또한 빨라지게 됩니다.


자바의 상속 선언

그렇다면 상속은 어떻게 하나요?

자바에서 상속은 extends 키워드를 사용하여 할 수 있습니다.

예문을 볼까요?

public class Person {
	...
}
public class Student extends Person { // Person을 상속받는 클래스 Student 선언
	...
}
public class StudentWorker extends Student { // Student를 상속받는 StudentWorker 선언
	...
}

모든 것들의 부모클래스인 Person에는 extends의 키워드가 없겠죠?
Person을 상속받는 클래스 Student가 선언되었고,
그런 Student를 상속받는 StudentWorker 선언되었습니다.

이렇게 각각 extends Person extends Student로 상속관계를 확인할 수 있겠습니다.



profile
기록의 힘을 믿는 개발자, 노하은입니다!

0개의 댓글