필드와 메서드

Backend kwon·2023년 4월 14일

필드

  • 클래스에 포함된 변수
  • 객체의 속성

자바에서 변수는 크게 클래스 변수, 인스턴스 변수, 그리고 지역 변수로 구분되는데,
필드는 클래스 변수와 인스턴스 변수이며, 이 둘은 static 키워드의 유무로 구분할 수 있다.

static 키워드가 함께 선언된 것은 클래스 변수
그렇지 않은 것은 인스턴스 변수이다.
그리고 이 두 가지 변수 유형에 포함되지 않고 메서드 내에 포함된 모든 변수를 지역변수라 부른다.

class Example { // => 클래스 영역
	int instanceVar; // 인스턴스 변수
	static int classVar; // 클래스 변수(static 변수, 공유변수)

	void method() { // => 메서드 영역
		int localVar = 0; // 지역 변수. {}블록 안에서만 유효
	}
}
  • 인스턴스 변수는 인스턴스가 가지는 각각의 고유한 속성을 저장하기 위한 변수로 new 생성자() 를 통해 인스턴스가 생성될 때 만들어진다.

  • 클래스 변수는 독립적인 저장 공간을 가지는 인스턴스 변수와 다르게 공통된 저장공간을 공유한다.

  • 한 클래스로부터 생성되는 모든 인스턴스 들이 특정한 값을 공유해야하는 경우에 주로 static 키워드를 사용하여 클래스 변수를 선언한다.

  • 클래스 변수는 인스턴스 변수와 달리 인스턴스를 따로 생성하지 않고도 언제라도 클래스명.클래스변수명 을 통해 사용이 가능

  • 필드 변수와 지역 변수의 주요한 차이점 (초기값)
    직접 초기화하지 않으면 값을 출력할 때에 오류가 발생하는 지역변수와는 다르게 필드 변수는 직접적으로 초기화를 실행하지 않더라도 강제로 초기화가 이루어진다.

     

static

  • 클래스의 멤버(필드, 메서드, 이너 클래스)에 사용하는 키워드

  • static 키워드가 붙어있는 멤버를 ‘정적 멤버(static member)'라 한다.

  • static 키워드로 정의되어 있는 클래스 멤버들은 인스턴스의 생성 없이도 클래스명.멤버명 만으로도 사용이 가능하다.

  • 정적 필드는 객체 간 공유 변수의 성질이 있다 (메서드도 동일)

  • 정적 메서드의 경우 인스턴스 변수 또는 인스턴스 메서드를 사용할 수 없다

즉, static 키워드를 사용하면 모든 인스턴스에 공통적으로 적용되는 값을 공유하게 된다.

 

 

메서드

  • 특정 작업을 수행하는 일련의 명령문들의 집합

  • 클래스의 기능에 해당하는 내용들을 담당

자바제어자 반환타입 메서드명(매개 변수) { // 메서드 시그니처
	메서드 내용 // 메서드 바디
}
  • 메서드의 반환타입이 void가 아닌 경우에는 메서드 바디 안에 반드시 return 문이 존재해야 한다.

 

메서드 호출

  • 메서드도 클래스의 멤버이므로 클래스 외부에서 메서드를 사용하기 위해서는 먼저 인스턴스를 생성해야한다.

    인스턴스를 생성한 후, 포인트 연산자(.)를 통해 메서드를 호출

  • 클래스 내부에 있는 메서드끼리는 따로 객체를 생성하지 않고도 서로를 호출할 수 있다.

 

메서드 오버로딩(Method Overloading)

  • 자바 가상머신은 메서드의 이름 또는 매개변수의 타입이 다르면 다른 메서드라고 인식하는 것을 이용한 것
class Example {
    public void area() { 
        System.out.println("넓이");
    }
    public void area(int r) {
        System.out.println("원 넓이 = " + 3.14 * r * r);
    }

    public void area(int w, int l) {
        System.out.println("직사각형 넓이 = " + w * l);
    }

    public void area(double b, double h) {
        System.out.println("삼각형 넓이 = " + 0.5 * b * h);
    }
}

 
오버로딩 성립 조건 2가지

  1. 같은 이름의 메서드명

  2. 매개변수의 개수나 타입이 다르게 정의

 
오버로딩의 장점
: 하나의 메서드로 여러 경우의 수를 해결할 수 있다

profile
백엔드개발자를 향해서

0개의 댓글