상속

다훈·2024년 7월 27일

상속

상속 (相續) : 일정한 친족 관계가 있는 사람 사이에서, 다른 사람에게 재산에 관한 권리와 의무의 일체를 이어 주거나, 다른 사람으로부터 그 권리와 의무의 일체를 이어받는 일.

  • 살아가면서 익히 들어본 상속. 자바에도 위와 같은 뜻의 상속이란 개념이 존재한다.
    자바에서는 부모 클래스자식 클래스가 존재하는데 자식 클래스가 부모 클래스에 상속을 받을 경우 부모 클래스에 기능을 사용할 수 있고 자식 클래스에 있는 기능도 사용할 수 있다. 즉, 한마디로 코드를 물려받는다고 생각하면 된다.

  • 상속 해주는 클래스를 부모클래스 또는 Super Class라고 부르며, 상속을 받는 클래스는 자식클래스 또는 Sub Calss라고 부를 수 있다.

  • 상속을 하기 위해선 extends 라는 키워드를 사용해야하며 표현법은 아래와 같다.

// [ 표현법 ]

public class 자식클래스 extends 부모클래스 { }

// Ex)
public class child extends parent{ }   
// child 클래스는 parent 클래스를 상속받았다.

상속의 특징

  • 보다 적은 양의 코드로 새로운 클래스들을 매번 작성 가능하다.
  • 부모 클래스는 여러 개의 자식 클래스에게 상속이 가능하다.
  • 중복된 코드를 공통적으로 관리하기 때문에 새로운 코드를 추가하거나 수정할 때 용이하다. ("생산성""유지보수" 에 크게 기여한다.)

상속 시 주의사항

  • 자바에서는 "다중 상속" 이 불가능하다. 즉, "단일 상속" 만 가능하다. (애석하게도 부모가 두 명일 수 없다.)

Object

  • 자바 프로그래밍에서 모든 객체에 대해 공통적으로 필요한 유용한 메소드들이 정의되어있는 "최상위 클래스"로 정의된다.
  • 명시되어있지는 않지만, 모든 클래스는 Object 클래스의 Sub Class 이다.
  • Object 클래스에 있는 메소드 및 필드들을 가져다 쓸 수 있으며, Object 클래스에 있는 메소드가 마음에 안든다면 오버라이딩을 통해 내 입맛대로 재정의가 가능하다.

super()와 super.

super 키워드는 자식 클래스에서 부모 클래스를 가리킬 때 사용하는 키워드다. 주로 부모 클래스의 필드에 접근, 메소드를 호출할 때 사용한다.

super()

  • 부모 객체의 생성자를 호출하는 메소드로, 기본적으로 후손 생성자에 부모 생성자 포함한다.
  • 후손 객체 생성 시에는 부모부터 생성이 되기 때문에 후손 클래스 생성자 안에는 부모 생성자를 호출하는 super()가 반드시 첫 줄에 존재해야 한다.
  • 매개변수가 있는 부모 생성자 호출은 super(매개변수, 매개변수)를 넣으면 된다.

super.

  • 상속을 통한 자식 클래스 정의 시 해당 자식 클래스의 부모 객체를 가리키는 참조변수. 자식 클래스 내에서 부모 클래스 객체에 접근하여 필드나 메소드 호출 시 사용한다.

오버라이딩

오버라이딩(overriding)이란 부모 클래스에서 상속받은 자식 클래스가 부모 클래스에 기능을 그대로 사용하는 게 아니라 자식 클래스에서 자신에 맞게 기능을 재정의 하고 사용하는 것을 의미한다.

오버라이딩의 성립 조건

  • 부모메소드의 메소드명과 동일해야 한다.
  • 매개변수의 자료형, 갯수, 순서가 모두 동일해야 한다. (매개변수명과는 무관하다.)
  • 반환형이 동일해야한다.
  • 접근제한자가 부모메소드와 같거나 공유 범위가 더 커야 한다.
profile
Devlog

0개의 댓글