# 단일 파라미터 메소드 /*선생님 먼저 이 수업이 많은 도움이 된다고 꼭 한번 말씀드리고 싶었습니다. ㅎㅎ */ 이 코드가 만약에 객체지향 언어인 JAVA가 아니라, 순서지향 언어인 c 였다면 이 코드에는 오류가 발생할까요? 위 수업에서 짠 코드를 보면 cube라는 메소드를 먼저 정의시키지 않았는데도 채 x가 정의되고, 이게 작동된다는 게 의아합니다. 이에 JAVA는 모든 메소드들을 먼저 정의하도록 설계되어있는지, 객체지향 언어는 어떤 걸 우선순위로 정의하는지 등등 자세히 알고싶습니다. #### CODE <a class='btn btn-default' href='/codes/19851'>Link</a> ``` public class CubeVolume { public static void main(String[] args) { // 변수 생성 int n = 3; // 메소드 호출을 통한 값 계산 int x = cube(n); // 결과 출력 System.out.printf("%d의 세제곱 => %d", n, x); } public static int cube(int n) { int result = n*n*n; return result; } } ``` #### INPUT ``` ``` #### OUPUT ``` 3의 세제곱 => 27 ```
## 답변입니다. ### 질문 요약 이 코드가 만약에 객체지향 언어인 JAVA가 아니라, 순서지향 언어인 c 였다면 이 코드에는 오류가 발생할까요? ### C언어라면? 에러가 납니다. 왜냐하면 main 함수가 컴파일 되기 전, cube() 함수를 찾을 수 없기 때문입니다. 이러한 문제를 해결하기 위해 C언어는 미리 사용 메소드를 앞쪽에 선언해줍니다. ### 자바는 왜? 그러나 자바의 경우, 메소드의 순서에 영향을 받지 않습니다. 간단히 표현하자면, 자바 컴파일러가 자동으로 모든 메소드를 앞쪽에 선언하기 때문입니다. 따라서, main() 메소드 밑에 cube() 메소드가 존재해도 문제되지 않습니다. ## PS. 좋은 질문 감사합니다 :D