본문 바로가기
개발/Java

[3주차] Java 중급 - 메서드 재정의와 가상 메서드 원리

by 컴쏘 2023. 6. 25.

메서드는 어떻게 호출되고 실행 되는가?

  • 메서드(함수)의 이름은 주소값을 나타냄 (그럼에도 overloading이 가능한 이유는 dummy parameter를 붙여서 이름을 조금씩 변형시켜서 가능하게 한다. 사실상 같은 이름의 함수는 없음
  • 메서드는 명령어의 set이고 프로그램이 로드되면 메서드 영역(코드 영역)에 명령어 set이 위치
  • 해당 메서드가 호출되면 명령어 set이 있는 주소를 찾아 명령어가 실행됨 (함수가 호출되는 것은 instruction set 부분이 호출되는 것임)
  • 이때 메서드에서 사용되는 변수들은 스택 메모리에 위치 하게됨
  • 따라서 다른 인스턴스라도 같은 메서드의 코드는 같으므로 같은 메서드가 호출
  • 인스턴스가 생성되면 변수는 힙 메모리에 따로 생성되지만, 메서드 명령어 set은 처음 한번만 로드(수행하는 기능의 instruction set부분이 인스턴스마다 다르게 생기지 않음)
package ch03;

public class TestMethod {
	int num;
	
	void aaa() {
		System.out.println("aaa() 호출");
	}
	
	public static void main(String[] args) {
		TestMethod a1 = new TestMethod();
		a1.aaa();
		
		TestMethod a2 = new TestMethod();
		a2.aaa();
	}
}

결과

가상 메서드의 원리

  • 가상 메서드 테이블(virtual method table)에서 해당 메서드에 대한 address를 가지고 있음
  • 재정의된 경우는 재정의된 메서드의 주소를 가리킴

2023 KAKAO Tech Campus_BackEnd 필수 과정
Java 3주차 강의 정리 내용입니다.