달마루
기획자에서 개발자로
달마루
전체 방문자
오늘
어제
  • 분류 전체보기 (334)
    • 기획 이야기 (3)
    • 개발자로 전향한 이유 (1)
    • Github Address (1)
    • 개발자, 그 여정 (11)
      • 기초특강 (4)
      • 국비학원 선정 (4)
      • BitCamp_수업내용 (1)
      • 학원 프로젝트 후기 (1)
      • 정보처리기사 (1)
      • 개발 이야기 (0)
    • 개념 창고 (126)
      • JAVA (50)
      • CS (1)
      • Database (27)
      • NetWork (2)
      • 자료 구조 (2)
      • React (8)
      • Spring (3)
      • JPA (1)
      • HTML & CSS (18)
      • JS (3)
    • algorithm (186)
      • 백준 (161)
      • 프로그래머스 (23)
    • 사는 이야기 (0)

블로그 메뉴

  • Github
  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • programmers
  • SQL고득점Kit
  • BRONZE
  • react
  • 혼자공부하는SQL
  • BOJ algorithm
  • Algorithm
  • 백준문제풀이
  • 프로그래머스
  • Scanner
  • sql 문제풀이
  • Bronze V
  • Bronze IV
  • SQL
  • 백준알고리즘
  • java algorithm
  • 문제풀이
  • 알고리즘
  • 혼공MySQL
  • select
  • 혼공SQL
  • HTML
  • BOJ
  • Bronze III
  • MySQL
  • math
  • 알고리즘풀이
  • 자바
  • java
  • 백준

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
달마루

기획자에서 개발자로

개념 창고/JAVA

상속에서 클래스 생성 과정과 형 변환

2022. 6. 27. 11:55

하위 클래스가 생성 되는 과정

  • 하위 클래스를 생성하면 상위 클래스가 먼저 생성 됨
  • new VIPCustomer()를 호출하면 Customer()가 먼저 호출 됨
  • 클래스가 상속 받은 경우 하위 클래스의 생성자에서는 반드시 상위 클래스의 생성자를 호출 함

super 키워드

  • 하위 클래스에서 가지는 상위 클래스에 대한 참조 값
  • super()는 상위 클래스의 기본 생성자를 호출 함
  • 하위 클래스에서 명시적으로 상위 클래스의 생성자를 호출하지 않으면 super()가 호출 됨
    ( 이때 반드시 상위 클래스의 기본 생성자가 존재 해야 함)
  • 상위 클래스의 기본 생성자가 없는 경우 ( 다른 생성자가 있는 경우 ) 하위 클래스에서는 생성자에서는 super를 이용하여 명시적으로 상위 클래스의 생성자를 호출 함
  • super는 생성된 상위 클래스 인스턴스의 참조 값을 가지므로 super를 이용하여 상위 클래스의 메서드나 멤버 변수에 접근할 수 있음

상속에서 인스턴스 메모리의 상태

  • 항상 상위 클래스의 인스턴스가 먼저 생성되고, 하위 클래스의 인스턴스가 생성 됨

형 변환(업캐스팅)

  • 상위 클래스로 변수를 선언하고 하위 클래스의 생성자로 인스턴스를 생성
    Customer customerLee = new VIPCustomer();
  • 상위 클래스 타입의 변수에 하위 클래스 변수가 대입
    VIPCustomer vCustomer = new VIPCustomer(); addCustomer(vCustomer); 
    int addCustomer(Customer customer){}
  • 하위 클래스는 상위 클래스의 타입을 내포하고 있으므로 상위 클래스로의 묵시적 형 변환이 가능함
  • 상속 관계에서 모든 하위 클래스는 상위 클래스로 형 변환(업캐스팅)이 됨
    ( 그 역은 성립하지 않음)

형 변환과 메모리

  • Customer vc = new VIPCustomer(); 에서 vc가 가리키는 것은?
  • VIPCustomer() 생성자에 의해 VIPCustomer 클래스의 모든 멤버 변수에 대한 메모리는 생성되었지만,
    변수의 타입이 Customer 이므로 실제 접근 가능한 변수나 메서드는 Customer의 변수와 메서드임

'개념 창고 > JAVA' 카테고리의 다른 글

가상 메서드 원리  (0) 2022.06.27
overring(메서드 재정의)  (0) 2022.06.27
객체 간의 상속  (0) 2022.06.24
배열(array)  (0) 2022.06.22
static 응용 - 싱글톤 패턴(singleton pattern)  (0) 2022.06.20
    '개념 창고/JAVA' 카테고리의 다른 글
    • 가상 메서드 원리
    • overring(메서드 재정의)
    • 객체 간의 상속
    • 배열(array)
    달마루
    달마루
    항상 어제보다 좋은 코드를 지향합니다. https://github.com/LimDongHyun99

    티스토리툴바