[JAVA] main 메소드에서 같은 클래스의 메소드 호출하는 방법

·2022년 10월 6일
0

오류 발생

같은 클래스 내의 다른 메소드를 호출할 때, 객체 생성 없이 무작정 호출을 하면 오류가 발생한다.

오류 부분에 마우스를 갖다대고 확인해보면, Change 'method()' to 'static' 문구가 보인다.

method 메소드를 static 으로 변경하라는 것인데, 그렇다면 모든 메소드를 static 으로 변경해야 할까? 아니다.

해결 1. 객체 생성

객체를 생성한 후 메소드에 접근하면 된다.

자바 애플리케이션을 실행할 때, static 이 붙은 항목이 가장 먼저 정의된다. main 메소드가 정의되었을 시점에 나머지 메소드가 정의되지 않았기 때문에 객체화를 한 뒤에 사용해야 하는 것이다.

클래스명 객체명 = new 클래스명();
클래스명.메소드명();

해결 2. static 사용

오류 안내문 처럼 메소드를 static 으로 변경하면 해결된다. 그러나 static 사용에는 장단점이 있기 때문에 상황에 맞춰가며 사용해야 한다.

✅ static 이란

static은 메모리에 고정적으로 할당되어 프로그램이 종료될 때 해제되는 것이다.

⭕️ static 장점

객체 생성이 필요 없어, 편리하고 속도가 빠르다. 프로그램 내에서 공통으로 사용되는 데이터들을 관리할 때 이용된다.

❌ static 단점

  1. 객체지향적이지 않다. 각 객체의 데이터들이 캡슐화되어야 한다는 객체지향 프로그래밍의 원칙(역주: 한 객체가 가지고 있는 데이터들은 외부에서 함부로 접근하여 수정할 수 없도록 해야 한다는 원칙)에 위반된다.
  2. 추론과 테스트에 매우 까다롭다. 코드의 여러 부분에서 영향을 받을 수 있고, 변화를 추척하기가 어려워진다.
  3. 오버라이딩을 할 수 없기 때문에 클래스를 확장하기 어렵다.
  4. 지나치게 많은 static 변수를 사용할 경우 메모리 회수가 불가능해 메모리 부족을 겪을 수 있다. 등

참고:
메소드를 객체화해야 호출할 수 있는 이유
static 개념
static 사용을 지양하는 이유

profile
🎨

0개의 댓글