Java에서 상속이란?

JinCode96·2023년 4월 10일

JAVA

목록 보기
5/8

들어가기 전

회사의 사원 클래스를 수평적 구조로 설계한다고 가정해보자

  • 객체를 설계하다 보면 비슷한 클래스의 경우 중복되는 요소가 발생한다.
    - 수평적 구조의 단점
    • 코드의 중복이 발생
    • 새로운 요구사항 발생시 반영이 어렵다(유지보수가 어렵다.)
    • 확장성이 떨어진다

회사의 사원 클래스를 수직적 구조로 설계한다고 가정해보자

  • 객체를 수직적 구조로 설계할 때 장점
    1. 코드의 중복을 최소화
    2. 새로운 요구사항 발생시 반영이 쉽다(유지보수가 쉽다)
    3. 확장성이 좋아진다

클래스를 계층화 하여 수직적 구조로 설계하는 것을 상속이라고 한다.

상속이란?

  • 상속이란 기존 클래스를 재사용하여 새로운 클래스를 작성하는 것이다.
  • 상속을 통해서 클래스를 작성하면 보다 적은 양의 코드로 새로운 클래스를 작성할 수 있고 코드를 공통적으로 관리할 수 있기 때문에 코드의 추가 및 변경이 매우 용이하다.
    -> 코드의 재사용성을 높이고 코드의 중복을 제거하여 프로그램의 생산성과 유지보수에 크게 기여한다.

메모리를 통한 상속의 이해

  • 서브 클래스는 상위 클래스의 기억공간을 사용할 수 있다.
  • 자식 클래스에서 부모클래스의 생태정보로 직접 접근하지 못하도록 정보은닉을 해야한다. (protected, private -> private를 주로 사용)

  • 상속관계에서 초기화를 할 때 부모의 생성자에서 초기화하는 것이 좋다.
  • 자식 클래스의 생성자에서 super(name, age, phone); 을 통해 부모 클래스의 생성자로 데이터를 보내고 부모 클래스의 생성자를 통해 초기화 한다.

  • 상속 체이닝 : 클래스 생성자에 생략되어있는 super()를 통해 부모의 클래스부터 객체가 생성되어 자식까지 연결되는 구조
  • 자식 클래스는 상속되어있는 부모클래스는 물론 최상위 클래스인 Object클래스 까지 연결되어있다.

Override(오버라이드)

  • 상속 관계에서 하위 클래스가 상위 클래스의 메서드(동작)를 재정의 하는 행위이다.(기능 추가, 변경)
  • 하위클래스에서 오버라이딩하는 메소드는 상위클래스의 이름, 매개변수, 반환타입이 같아야 한다.

부모의 타입으로 업캐스팅하게 되면 자식 클래스의 멤버에는 접근할 수 없다. 하지만 Override를 통해 부모의 메서드를 자식에서 재정의 하게 되면 동적바인딩을 통해 접근할 수 있다.

  • 동적 바인딩 : 실행 시점(Run time)에 어떤 메서드를 호출할 지 정해지는 바인딩 방식

Overloading(오버로딩)

  • 하나의 클래스 내에서 동일한 이름의 메서드를 여러 개 사용할 수 있는 객체지향 기법
  • 동작이 비슷하기 때문에 메서드 이름을 같게 만들어 사용하면 편리하다
  • 메서드의 시그니처(signature) 가 달라야 한다
  • 정적 바인딩 : 컴파일(Compile time) 시점에 어떤 메서드를 실행할지 결정하는 바인딩 방식
profile
꾸준히 성장하는 개발자

0개의 댓글