메서드 입장에서 바라본 static

Do_It·2024년 3월 26일

클래스에 메서드가 하나만 있다고 가정해보자. 클래스 안에 있는 메서드를 사용할 경우 매번 인스턴스를 생성해야한다.
단지 메서드를 쓰기 위해서 매번 인스턴스를 새로 생성해야하는 것은 메모리 낭비이다. 그리고 코드도 지져분해진다.
이럴 경우 어떻게 하면 좋을까?

정적 메서드

정적 메서드를 사용하면 붎필요한 객체 생성 없이 편리하게 메서드를 사용할 수 있다.

용어 정리

  • 클래스 메서드 : 메서드 앞에 static이 붙은 메서드. 인스턴스 생성 없이 클래스에 있는 메서드를 바로 호출할 수 있음
  • 인스턴스 메서드 : static이 붙지 않은 메서드이며 인스턴스를 생성해야 호출할 수 있다.

정적 메서드 사용법

정적 메서드는 객체 생성없이 클래스에 있는 메서드를 바로 호출할 수 있다는 장점이 있다. 하지만 정적 메서드는 언제나 사용할 수 있는 것이 아니다.

정적 메서드 사용법

  • static 메서드는 static만 사용할 수 있다.
    클래스 내부의 기능을 사용할 때, 정적 메서드는 static이 붙은 정적 메서드나 정적 변수만 사용할 수 있다.
  • 클래스 내부의 기능을 사용할 때, 정적 메서드는 인스턴스 변수나,인스턴스 메서드를 사용할 수 없다.
  • 반대로 모든 곳에서 static을 호출할 수 있다. 정적 메서드는 공용 기능이다. 따라서 접근 제어자만 허락한다면 클래스를 통해 모든 곳에서 static을 호출할 수 있다.

정적 메서드가 인스턴스의 기능을 사용할 수 없는 이유

인스턴스 변수를 쓰려면 인스턴스가 생성되어야하는데, 인스턴스를 만들지 않는다면 인스턴스의 참조값을 알 수 없기 때문이다.

정적메서드는 클래스의 이름을 통해 바로 호출할 수 있다. 그래서 인스턴스처럼 참조값의 개념이 없다. 특정 인스턴스의 기능을 사용하려면 참조값을 알아야 하는데, 정적 메서드는 참조값 없이 호출한다. 따라서 정적 메서드 내부에서 인스턴스 변수나 인스턴스 메서드를 사용할 수 없다.

정적 메서드 활용

정적 메서드는 객체 생성이 필요 없이 메서드의 호출만으로 필요한 기능을 수행할 때 주로 사용한다. 예를 들어 간단한 메서드 하나로 끝나는 유틸리스성 메서드에 사용된다.

profile
오늘의 노력이 내일의 성장으로 이어지고 있음을

0개의 댓글