필드(Field)와 메서드(method)

정민교·2022년 9월 9일

필드(Field)

선언 위치에 따라 변수 종류를 결정

선언 위치

  • 클래스 영역: 클래스 변수, 인스턴스 변수 (static 키워드로 구분)
  • 메서드 영역: 지역 변수
class Example {
  /**
   * 클래스 영역
   **/
  // 인스턴스 변수
  int insVar1;
  int insVar2;
  // 클래스 변수
  static int clsVar;

	public void examMethod() {
    /**
     * 메서드 영역
     **/
    int localVar;
  }
}

지역 변수

해당 메서드가 종료되면 소멸

지역 변수는 선언 시 반드시 초기화

인스턴스 변수, 클래스 변수

static 키워드로 구분 -> static 멤버는 정적 멤버라고 부름.

클래스 변수는 JVM Method Area에 저장되며 모든 인스턴스가 같은 공간을 공유

클래스 변수프로그램이 종료할 때 까지 유지된다.


메서드(Method)

특정 목적을 수행하는 일련의 명령문들의 집합

메서드는 메서드 시그니처메서드 바디로 구분된다.

반환타입 메서드 이름(타입 변수명, ...) {// 메서드 시그니처
	... 메서드 바디
}

반환 타입이 void가 아닌 경우에는 반드시

return 반환값; 이 포함되어야 하며

반환값의 타입이 반환 타입과 동일하거나 적어도 자동 형변환이 가능한 것이어야 한다.

클래스 메서드

클래스 메서드는 같은 클래스 내의 인스턴스 메서드 호출 불가
클래스 메서드는 같은 클래스 내의 인스턴스 변수 사용 불가

메서드 오버로딩

같은 이름의 메서드를 여러개 정의하는 것

메서드 오버로딩 조건
1. 이름 동일
2. 매개변수 타입 or 갯수가 다름
반환 타입은 오버로딩 성립 조건에 포함되지 않음

class Example {
  // 매개변수 타입이 다름
  public int add(int x, int y) {return x+y;}
  public long add(long x, long y) {return x+y;}
  public double add(double x, double y ) {return x+y;}
  // 매개변수 갯수가 다름
  public int add(int x, int y, int z) {return x+y+z;}
}

장점

하나의 메서드로 여러 경우 해결이 가능

참고

가변인자 메서드는 오버로딩 하지 않는 것이 좋음

profile
백엔드 개발자

0개의 댓글