이전 걸음에서 간단하게 메소드 문제를 풀어 봤습니다. main메소드에서만 호출을 하여 문제를 풀었는데 그럼 여기서 의문이 드실 수 있습니다. 메소드를 호출을 하는 것은 main 메소드에서만 호출이 가능 할까? 하는 이런 의문이 드실 수도 있고 생각을 하지 못 할 수도 있습니다. 이런 부분이 저 또한 상당히 중요하다고 생각을 하기 때문에 같이 알아보도록 하겠습니다.
메소드를 좀 더 자세히 살펴 보려면 메소드의 동작 방법과 구조를 알아야 하고 또한 그 구조를 좀 더 세밀하게 활용하는 방법을 알아야 메소드를 사용을 할 경우 원하는 기능이 동작이 되도록 구현을 할 수 있습니다. 그렇기 때문에 이 글을 통해서 메소드에 동작 원리와 구조를 알고 활용을 할 수 있도록 설명을 했습니다. 이 글을 끝까지 읽으신다면 메소드에 대한 이해가 한층 깊어질 수 있습니다.
메소드의 구조는 Stack구조라는 형태로 되어 있습니다. 동작의 원리는 그 Stack구조의 원리로 움직이게 됩니다. 그러면 메소드 구조인 Stack구조를 확실히 이해를 한다면 동작 원리와 방법을 이해를 할 수 있고 활용을 할 수가 있습니다. 이 글을 끝까지 읽으신다면 메소드의 Stack구조와 메소드를 여러 방법으로 활용을 하실 수 있습니다.
메소드 구조
위의 이미지 설명대로 메소드의 구조는 Stack구조를 가지고 있습니다. 그럼 Stack구조는 항아리와 같은 구조를 이루고 있다고 생각을 하시면 됩니다. 그래서 동작의 방식이 Last In First Out 또는 First In Last Out이게 되는데 이건 약자로 LIFO, FILO로 불리고 있습니다.
예를 들어 항아리에 물이 담겨져 있다고 생각을 해보시면 됩니다. 물을 채우면 맨 밑 부분에서 물이 채워지고 그 물을 마시려고 한다면 마지막에 들어온 상단의 물을 먹게 되는 원리라고 생각을 하시면 됩니다. 이런 원리로 메소드가 움직인 다는 것을 꼭 알고 있으셔야 합니다.
※ main메소드에서만 다른 메소드를 호출을 할 수 있는 것이 아니라 다른 메소드에서 다른 메소드를 부르는 것에 대한 제약이 없습니다. 한마디로 원하는 메소드가 있다면 다른 메소드가 언제든지 호출을 할 수 있습니다.
메소드 소스
위의 소스는 간단하게 형식을 맞게 만들어져서 동작이 되는 소스는 아니고 간단하게 메소드의 이해를 돕기 위한 간략하게 만든 소스라고 생각을 하시면 됩니다.
main() -> A() -> B() -> C() -> D() -> E() 부르는 형식으로 메소드가 메소드를 불러서 타고 들어가는 느낌의 소스로 구현이 되었다고 보시면 됩니다. 중간 중간에 다시 K()메소드를 불러서 조금 더 도움이 될 수 있도록 구현을 했습니다.
메소드 소스 설명
위의 설명 사진과 같이 동작을 하기 때문에 결과는 EDCABAA가 출력이 되게 됩니다. 이렇게 출력이 되는 전반적인 구조를 그림으로 설명을 했기 때문에 잘 보고 이해를 하시면 메소드 호출과 이동에 대한 이해가 한층 더 깊어 지실 수 있습니다.
※메소드는 호출을 하면 그 메소드로 이동 후에 메소드에서 더 이상 실행 할 명령이 없으면 나를 호출을 했던 메소드로 이동을 하게 됩니다. (중요)