한 클래스(자식 클래스) 다른 클래스(부모 클래스)의 속성과 메소드를 이어받는 것이다.
상속을 받는 클래스 : 자식 클래스(서브 클래스)
상속을 해주는 클래스 : 부모 클래스(슈퍼 클래스)
상속의 장점
- 상속을 통해 코드 재사용성 증가
- 유지보수 용이
그렇다면 자바에서는 어떻게 상속을 정의할까?
바로 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)란 부모 클래스로부터 상속받은 메소드를 자식 클래스에서 재정의하는 것을 말한다.
부모 클래스 Animal을 상속받은 Bird, Fish, Person 클래스는 eat 메소드를 상속받게 되는데 이 상속받은 eat 메소드를 그대로 사용하기 보다 변형해서 사용하고 싶을 때
Overriding
을 사용한다.
@Overriding
밑에 부모 메소드와 동일하게 작성해주되 메소드 내용을 달리해주면 각 클래스에서 eat메소드를 호출할 때 부모 메소드를 호출하지 않고 오버라이딩된 자식 클래스의 메소드가 실행된다.
가치 있는 정보 공유해주셔서 감사합니다.