Christmas Pikachu 상속(부모, 자식 클래스) , 다형성 - 오버라이드(@Override)
개발일지/자바

상속(부모, 자식 클래스) , 다형성 - 오버라이드(@Override)

ZI_CO 2022. 9. 5.

<상속>

상속이란?

 

쉽게 말해 부모 클래스(상위 클래스)와 자식 클래스(하위 클래스)가 있으며, 자식 클래스는 부모 클래스를 선택해서, 그 부모의 멤버를 상속받아 그대로 쓸 수 있게 된다.

 

상속을 하는 이유는 간단하다. 이미 마련되어 있던 클래스를 재사용해서 만들 수 있기 때문에 효율적이고, 개발 시간을 줄여주게 때문이다.

상속을 하더라도 자식 클래스가 부모의 모든 것들을 물려받는 것은 아니다.

  • 부모 클래스의 private 접근 제한을 갖는 필드 및 메소드 자식이 물려받을 수 없다. (priavate = 공유가 안됨)
  • 부모와 자식 클래스가 서로 다른 패키지에 있다면, 부모의 default 접근 제한을 갖는 필드 및 메소드도 자식이 물려받을 수 없다
    (default 접근 제한은 ‘같은 패키지에 있는 클래스’만 접근이 가능하게끔 하는 접근 제한자이기 때문입니다.)
  • 그 이외의 경우는 모두 상속의 대상이 됩니다.

<상위클래스> = 부모클래스

Animal이라는 상위클래스에 동물이 움직이는 글을 출력하는 move()라는 메소드가 있다. 이 메소드를 하위클래스가 상위클래스에 있는 메소드를 쓸수 있도록 상속을 시켜줄것이다.

 

 

<하위클래스> = 자식클래스

밑에있는건 Human이라는 클래스 즉 상위클래스를 상속받은 하위클래스이다

하위클래스로 상속을 받으려면 public class Human뒤에 한칸띄우고  Ctrl + 스페이스바를 눌러준다. 그러면 extends가 활성화를 시킬수있다 extends뒤에 부모클래스를 입력해주면 상위클래스를 상속받은 하위클래스가 된다.

 

하위클래스 안에서 그하위클래스명에 맞는 사용할 메소드들이 있을것이다  하지만 그메소드명이 상위클래스 메소드명과 같으면 쓸수가 없다 하지만 Override(오버라이딩)을 써서 상위클래스에 있는 메소드명을 쓸수가 있다.

 

오버라이딩(재정의)

오버라이딩(재정의)이란? 

부모클래스로부터 상속받은 하위클래스에서 메소드를 재정의해서 다시 사용하는 기법이다.

즉, 부모님에게 상속받은 물건을 내가 원하는대로 바꿔서(재정의) 다시 돌려준다.라고 생각하면 된다.

내가 원하는대로 꾸며서 돌려드린거기 때문에 부모님에게 받은것도 원상태도 아닌 재정의된 새로 생긴 물건인 것이다.

Human 클래스에서 ctrl + space를 누르면 아래와 같이 오버라이딩 표시(상위클래스에서 사용할 메소드명) 가 되는데 이를 누르면 오버라이딩을 할 수 있다.

 

 

 

 

그렇게 Override가된 메소드는 상위클래스에서 사용되는 메소드가아닌 하위클래스에서 쓰는 메소드가 되는것이다.

 

 

 

Override 사용할 때 주의할 점

오버라이딩과 오버로딩이 단어가 비슷해서 반대로 생각해서 착각하는경우가 많아 완전히 다른 의미이다.

오버로딩은 메소드의 이름이 같고, 매개변수의 개수나 타입이 달라야한다. 주의할 것은 리턴 값만 다른 것은 오버로딩을 할 수 없다는 것이다. 

 

 

'개발일지 > 자바' 카테고리의 다른 글

업캐스팅, 다운캐스팅  (0) 2022.09.07
추상 클래스  (0) 2022.09.05
배열 - Array  (0) 2022.09.04
this, Getter, Setter  (0) 2022.09.04
싱글톤  (0) 2022.09.01

댓글