☕JAVA/🐣 강의 [JAVA]

[JAVA][기초] 상속 과 오버라이딩 Overriding

디카페인라떼 2022. 10. 7. 21:52

[기초] 시리즈는 본강의를 수강후 정리한 글들 입니다.

Java for Beginner - YouTube

 

Java for Beginner

[교재 link] https://github.com/namoosori/java-for-beginner/tree/master/doc Java for Beginner 강의에서 다루는 내용은 다음과 같습니다. - Java 개요 : Java 언어가 어떤 언어이고 Java 언어를 이용해 프...

www.youtube.com


상속
  • 연관 있는 클래스들에 대해 공통적인 구성요소를 정의하고, 이를 대표하는 클래스를 정의하는 것
  • 상속 관계는 "is a" 관계를 의미하며 extends 키워드를 이용해 상속 관계를 정의
    • 상속 관계에서 상속을 받는 클래스 - 자식클래스
      • sub class, derived class, extended class, child class
    • 상속 관계에서 상속을 제공하는 클래스 - 부모클래스
      • super class, base class, parent class

  • 자식클래스는 부모클래스를 상속받아서 부모클래스의 모든 자원 (속성, 메소드)을 사용할 수 있음.
    • 그러나 private 으로 접근 지정자가 지정된 필드나 메소드는 상속 불가능
  • 자식클래스는 부모클래스에 없는 필드와 메소드를 정의하여 기능을 추가할 수 있음.
  • 또한 , 상위 클래스에 정의된 메소드를 재정의하여 다르게 동작시킬 수 있음. (오버라이딩)

 

protected
  • 상속 대상이 되는 부모 클래스에 protected 접근 지정자로 정위된 구성요소는 자식 클래스 구성요소가 됨.
  • 자식 클래스는 부모 클래스의 protected, public 구성요소에 대해 this 접근이 가능.
  • 즉, 상속 관계에서 자식 클래스는 부모 클래스에서 제공하는 구성요소들을 자신의 구성요소로 포함함.
  • 부모 클래스의 private 구성요소는 자식클래스에서 직접 접근 불가
상속 관계의 초기화 과정
  • 상속 관계에서 자식클래스를 인스턴스화 하면 부모 클래스의 객체도 인스턴스화가 진행됨.
  • 자식 클래스의 객체가 인스턴스화 되기 위해서는 먼저 부모 클래스의 객체가 인스턴스화 되어야 함.
    • 메모리 구조관점에서 보면 자식 클래스가 인스턴스화가 될 때 heap 영역에 메모리 할당이 될 때 
      부모 클래스를 상속 받았기때문에 부모클래스 객체의 메모리 공간까지 같이 할당이 되어야함.
  • 따라서, 상속 구조에서 가장 상위의 부모 클래부터 차례로 인스턴스화가 진행됨.
super()

  •  super() 생성자는 자식 클래스에서 명시적으로 부모클래스의 생성자를 호출할 수 있도록 하는 방법
  • 상속 관계에서 부모 클래스의 생성자 호출을 외부에서 명시적으로 지정할 수 없음.
  • 자바는 자식 클래스의 객체가 인스턴스화 될 때 기본적으로 부모 클래스의 디폴트 생성자를 호출.
  • 부모 클래스에 디폴트 생성자가 정의되어 있지 않으면 자식 클래스는 명시적으로 임의의 부모 클래스의 생성자를 호출해야 함.

 


메소드 재정의 = 오버라이드

  • 부모 클래스의 메소드를 자식 클래스가 확장하거나 다시 정의하는 것
  • 매소드 재정의를 구현하는 방법은 부모 클래스로부터 상속받은 메소드의 반환타입, 메소드명, 파라미터를 동일하게 하여 자식 클래스에서 정의
    • 기능/ 바디 부분만 다름
  • 자식 클래스가 부모 클래스의 메소드를 재정의할때 접근 지정자의 범위는 넓거나 같아야 함.
  • 오버로딩 vs 오버라이딩
    • 오버로딩
      • 하나의 클래스 안에서 일어나는 일
    • 오버라이딩
      • 상속관계에서 일어나는 일 = 2 개의 클래스 사이에서 일어나는 일 
super
  • 메소드 재정의는 부모 클래스로부터 상속 받은 기능을 새롭게 변경하거나 확장하기 위해서임
  • 자식 클래스에서 상속 받은 메소드의 기능을 확장하기 위해서는 부모 클래스의 메소드에 대한 호출이 필요
    • super.부모클래스의메소드 (); + 확장하고자 하는 기능들 추가
  • 자식 클래스가 부모 클래스의 구성요소에 접근하기 위해서는 super 키워드를 이용

 

 


2022.08.10 - [JAVA] - [JAVA] 상속 / super / 부모생성자/ 클래스형변환

 

[JAVA] 상속 / super / 부모생성자/ 클래스형변환

상속 : 부모가 가진 것을 자식에게 물려주는 것 노트북은 컴퓨터의 한 종류다. 컴퓨터(부모)-노트북(자식) 침대는 가구의 한 종류다. 혹은 침대는 가구다. 가구(부모)-침대(자식) => is a 관계 혹은 k

wearegolden.tistory.com

2022.08.10 - [JAVA] - [JAVA] 메소드 - 오버라이딩

 

[JAVA] 메소드 - 오버라이딩

2022.08.10 - [JAVA] - [JAVA] 상속 / super / 부모생성자 is a 관계 혹은 k" data-og-host="wearegolden.tistory.com" data-og-source-url="https://wearegolden.tistory.com/96" data-og-url="https://wearegold..

wearegolden.tistory.com