Backend/JAVA / / 2021. 9. 16. 00:03

[JAVA] 상속(inheritance)

상속이란?

상속이란, 기존의 클래스를 재사용하여 새로운 클래스를 작성하는 것


상속해주는 클래스 : 조상 클래스, 부모(parent) 클래스, 상위(super) 클래스, 기반(base) 클래스

상속 받는 클래스 : 자손 클래스, 자식(child) 클래스, 하위(sub) 클래스, 파생된(derived) 클래스


class Parent { }
class Child extends Parent { }

조상의 클래스를 확장(extend)한다는 의미로 해석할 수 있으며 이것이 상속에 사용되는 키워드가 'extends'인 이유이기도 하다.


 - 생성자와 초기화 블럭은 상속되지 않는다. 멤버만 상속된다.

 - 하위(sub) 클래스의 멤버 개수는 상위(super) 클래스보다 항상 같거나 많다.

 - 하위 클래스의 인스턴스를 생성하면 상위 클래스의 멤버와 하위 클래스의 멤버가 합쳐진 하나의

   인스턴스로 생성된다.

 - JAVA에서는 오직 단일 상속만을 허용한다. 둘 이상의 클래스로부터 상속을 받을 수 없다.

 - 모든 클래스의 조상은 Object 클래스이다.


클래스간의 관계

 - 상속관계 : ~은~이다. (is-a 관계)

 - 포함관계 : ~은~을 가지고 있다. (has-a 관계)


오버라이딩이란?

조상 클래스로부터 상속받은 메서드의 내용을 변경하는 것


오버라이딩의 조건

 하위 클래스에서 오버라이딩하는 메서드는 상위 클래스의 메서드와

 - 이름이 같아야 한다.

 - 매개변수가 같아야 한다.

 - 반환타입이 같아야 한다.

 

 상위 클래스의 메서드를 하위 클래스에서 오버라이딩할 때

 - 접근 제어자를 상위 클래스의 메서드보다 좁은 범위로 변경할 수 없다.

 - 예외는 상위 클래스의 메서드보다 많이 선언할 수 없다.

 - 인스턴스메서드를 static메서드로 또는 그 반대로 변경할 수 없다.


오버로딩 vs 오버라이딩 비교

 오버로딩 (overloading) : 기존에 없는 새로운 메서드를 정희하는것 (new)

 오버라이딩 (overriding) : 상속받은 메서드의 내용을 변경하는 것 (change, modify)


super 키워드

super는 자손 클래스에서 조상 클래스로부터 상속받은 멤버를 참조하는데 사용되는 참조변수이다.

상속받은 멤버와 자신의 멤버가 이름이 같을 때는 super를 붙여서 구별할 수 있다.


super() - 조상 클래스의 생성자

Object클래스를 제외한 모든 클래스의 생성자 첫 줄에 생성자,this() 또는 super(),를 호출해야 한다. 그렇지 않으면 컴파일러가 자동적으로 super(); 를 생성자의 첫 줄에 삽입한다.

반응형
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유