• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

static method 호출에 관해서

22.03.31 11:24 작성 조회수 160

0

처음에 이런식으로 sum method에 static을 빠뜨렸더니 main method부분에서 에러가 났습니다 

 

public class TPC06 {

public static void main(String[] args) {

//메서드 -> 동작(method), 기능(function) 

//정수 2개를 더하여 총 합을 리턴하는 메서드를 정의하시오 

int a= 67;

int b=98;

int result=sum(a,b); //에러

}

public int sum(int a, int b) {

int v=a+b;

return v;

}

}

 

찾아보니 static method를 안붙여서 객체생성 없이 호출한거라 에러가 난거라 하는데요 

그래서 아래와같이 인스턴스를 생성해서 호출해봤는데도  에러가 납니다 

어떤식으로 호출해야 에러가 안나는지 혹시 반드시 static을 붙여야만 하는거라면 이유가 무엇인지 알수있을까요 

 

public class TPC06 {

public static void main(String[] args) {

//메서드 -> 동작(method), 기능(function) 

//정수 2개를 더하여 총 합을 리턴하는 메서드를 정의하시오 

int a= 67;

int b=98;

sum sum2 = new sum(); //객체생성 에러 

int result=sum2(a,b); //sum2 에러

}

public int sum(int a, int b) {

int v=a+b;

return v;

}

}

 

답변 1

답변을 작성해보세요.

1

main 메서드가 static 메서드이기 때문에 sum이라는 메소드도 static키워드를 붙여서 만들어주시면
static 이 붙어있는 메서드는 같은 메모리 공간에 만들어지기 때문에 바로 호출할수가 있습니다.
static 키워드를 빼버리면 main 메서드에서 sum 메서드를 호출할 수가 없습니다.
(즉, 만들어지는 메모리 공간이 다르기 때문으로 이해하시면 됩니다.)
그래서 sum에 static 키워드를 붙여주면 쉽게 해결이 됩니다.

하지만 sum 메서드에 static 키워드가 없다면 sum 메서드를 메모리에 올리는 작업을 해서(객체생성)
해당 메모리를 참조하게한 후 호출을 해야됩니다. 아래처럼요^^

TPC06 t=new TPC06();

int result=t.sum(a,b);

이해가 되셨을까요?