Java

JAVA Extends

titlejjk 2023. 5. 2. 18:28

Extends란 자바에서 자식 클래스가 부모 클래스의 필드와 메서드를 물려 받는 것을 의미한다. 이때, 자식 클래스는 부모 클래스를 상속받기 위해 extends 예약어를 사용해야 한다.

예를 들어

부모 클래스 👉 Animal Class

이를 상속받는 자식 클래스 👉 Dog Class

이렇게 부모 클래스와 자식 클래스가 있다면 Dog 클래스는 Animal 클래스를 상속받기 위해 아래와 같이 작성하면 된다.

public class Dog extends Animal {
    // Dog Class에 클래스 명이 Animal Class인 부모 클래스를 상속받음
}

위와 같이 작성하면, Dog 클래스는 Animal 클래스의 필드와 메서드를 사용할 수 있다. 또한, 하나의 부모 클래스는 여러개의 자식 클래스를 가질 수 있지만, 반대로 자식 클래스는 여러 부모 클래스(다중상속)를 상속받을 수 없다.

또한 부모 클래스에서 private 접근 제한을 갖는 필드와 메소드, 그리고 부모 클래스와 자식 클래스가 다른 패키지에 존재하며, defalut 접근 제한을 갖는 필드와 메소드는 상속이 제한 된다.

 

extends 를 사용하게되면 다음와 같은 장점과 단점이 있다.

먼저 장점으로는

  • 코드 중복 감소 ( 이미 개발된 클래스를 재사용하여 새로운 클래스를 만들수 있다.)
  • 유지 보수 시간 감소(부모 클래스의 수정으로 상속받은 자식 클래스들 또한 그 영향을 받는다)

단점으로는

  • 클래스 간의 결합도가 높아지고, 코드의 복잡도 증가
  • 상속 구조가 복잡해질수록 디버깅이 어려움

등이 있다.