JAVA 기초 : 상속(inheritance)과 오버라이딩(overriding)

mark1106·2023년 7월 18일
0

JAVA

목록 보기
8/11

상속(inheritance)이란?

한 클래스(자식 클래스) 다른 클래스(부모 클래스)의 속성과 메소드를 이어받는 것이다.

상속을 받는 클래스 : 자식 클래스(서브 클래스)
상속을 해주는 클래스 : 부모 클래스(슈퍼 클래스)

상속의 장점

  1. 상속을 통해 코드 재사용성 증가
  2. 유지보수 용이

extends

그렇다면 자바에서는 어떻게 상속을 정의할까?
바로 extends 키워드를 통해 상속 받을 수 있다.

부모 클래스를 상속받으려면 extends 를 작성하여 준다.
public class SubClass 라는 Subclass가 부모 클래스인 Super클래스를 상속 받으려면 뒤에 "Super클래스를 상속 받겠습니다" 는 표현인 extends SuperClass를 적어주면 된다.

Animal이라는 부모 클래스를 자식 클래스인 Bird, Fish, Person 클래스가 extends 부모 클래스명을 통해 상속 받는 것을 알 수 있다.

이 때 자식 클래스는 상속 받은 속성 + 자신 고유의 속성을 가지게 된다.

Bird 속성 : gender(부모) + weight(자신) + color(자신)
Fish 속성 : gender(부모) + havingPoison(자신) + livingSea(자신)
Person 속성 : gender(부모) + name(자신) + job(자신) + height(자신)

Fish 클래스를 상속받은 FishChild를 생성하는 생성자는 자동으로 부모 생성자를 호출해준다.

만약 default값으로 생성자를 생성하고 싶지 않다면 생성자 super(매개변수)를 통해 자식 객체를 생성할 수 있다.


오버라이딩(Overriding)

오버라이딩(overriding)란 부모 클래스로부터 상속받은 메소드를 자식 클래스에서 재정의하는 것을 말한다.

부모 클래스 Animal을 상속받은 Bird, Fish, Person 클래스는 eat 메소드를 상속받게 되는데 이 상속받은 eat 메소드를 그대로 사용하기 보다 변형해서 사용하고 싶을 때 Overriding을 사용한다.

@Overriding 밑에 부모 메소드와 동일하게 작성해주되 메소드 내용을 달리해주면 각 클래스에서 eat메소드를 호출할 때 부모 메소드를 호출하지 않고 오버라이딩된 자식 클래스의 메소드가 실행된다.

profile
뒤돌아보면 남는 것은 사진, 그리고 기록 뿐

1개의 댓글

comment-user-thumbnail
2023년 7월 18일

가치 있는 정보 공유해주셔서 감사합니다.

답글 달기