자격증 따야지/정보처리기사 2024

정보처리기사 실기_상속 초기화_생성자 호출 과정

jju_developer 2023. 7. 16. 15:14
728x90

안녕하세요 jju_developer입니다.

 

정보처리기사 실기 문제에서 자주 나오는 자바의 상속에 대해 알아보겠습니다.

 

정보처리기사 문제는 비교적 코딩하는 문제가 많이 나와서 

개발자 분들은 비교적 쉽게 문제를 풀 수 있다고 합니다!

오늘은 실수를 하지 말자는 의미에서 생성자 호출 할 때 일어나는 일을 정리해 보았습니다.

 

상속 관계의 초기화 과정

✅ 상속 관계에서 자식 클래스를 인스턴스화 하면 부모 클래스의 객체도 인스턴스화가 진행됩니다.

-> 이 뜻은 자식이 부모 클래스를 상속받고 있기 때문에

자식 클래스에서 객체를 인스턴스화 하게 된다면 부모 클래스의 객체가 먼저 인스턴스화 된다는 뜻입니다.


✅ 따라서, 상속 구조에서 가장 상위의 부모 클래스부터 차례로 인스턴스화가 진행됩니다.

 

이 부분을 간과하고 넘어간다면 우리는 문제를 풀 때 자식 클래스만 신경 쓰는 오류를 범할 수 있습니다!

 

과정을 보겠습니다.

 

1. 부모 클래스

public class A {
	public A(){
    	System.out.println("부모");
    }
}

 

2. 자식 1

public class B extends A {
	public B(){
    	System.out.println("자식~");
    }
}

 

3. 자식 2

public class C extends B {
	public C(){
    	System.out.println("막내 자식~");
    }
}

 

4. 메인

public class InheritanceAssist {
	public static void main(Strubg[] args){
    	C child = new C();
    }
}

이렇게 두 번째 자식 즉, 제일 막내를 메인에서 불러와 객체를 인스턴스화 했다면

결과는 어떻게 나올까요?

 

"막내자식~"만 출력이 되는 것일까요??

 

아닙니다!!

 

처음 부모가 먼저 출력이 되고

부모

자식 ~

막내 자식~

이렇게 순차적으로 결과가 나올 것입니다.

 

그 이유는 사실 젤 최상위 부모인 object가 먼저 인스턴스화 되고 그다음 A -> B -> C

이렇게 순서가 되는 것입니다.

 

그렇다면 자바의 메모리에서는 어떤 변화가 있을까요?

 

그림으로 설명을 드리겠습니다.

 

이렇게 막내의 클래스에서 힙메모리에 부모 인스턴스의 메모리 공간이 확보가 되어야 하기 때문에

상속의 부모 클래스의 객체를 먼저 알아야 합니다.

 

이렇게 자바의 상속에 대해 알아보았습니다.

 

시험장에서 헷갈리지 말고 꼭 문제 많이 풀어보시기 바랍니다!!!

 

바쁘다 바빠 나의 인생

추가설명 아래 클릭 클릭!

 

정보처리기사 실기_자바_super();

안녕하세요 jju_developer입니다. 자바 상속 관련하여 지난시간 덧붙여서 설명을 드리겠습니다. 정보처리기사 실기_상속 초기화_생성자 호출 과정 안녕하세요 jju_developer입니다. 정보처리기사 실기

jju240.tistory.com

 

728x90