본문 바로가기

development/Java

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

학습목표

  • 필드를 이해하고, 세가지 종류의 변수를 구분할 수 있다
  • 변수가 저장되는 위치를 설명하고,  차이를 설명할 수 있다
  • 메서드를 이해하고 구성요소와 호출에 대해 설명할 수 있다
  • 오버로딩을 이해하고 장점을 설명할 수 있다.

필드(Field)

정의

클래스에 포함된 변수

 

구성 요소

class ExampleClass { 			// 클래스 영역
	int instanceVariable; 		// 인스턴스 변수
	static int classVariable;	// 클래스 변수(static 변수, 공유변수)

	void method() { 		// 메서드 영역
		int localVariable = 0; 	// 지역 변수
	}
}

크게 클래스 변수, 인스턴스 변수, 지역 변수로 나눌 수 있다.

인스턴스 변수와 클래스 변수 == 필드

클래스 변수 == static 선언

지역변수 == 메서드 내에 포함된 변수

 

인스턴스 변수

  • 필드에서 선언
  • 힙 메모리에 저장
  • 독립적인 저장 공간을 가짐
  • new 생성자() 를 통해 인스턴스가 생성된다.
  • 초기화하지 않으면 강제 초기화

클래스 변수

  • 필드에서 static 키워드를 통해 선언
  • 클래스 내부 메모리에 저장
  • 공통된 저장공간 공유
  • 인스턴스 생성 없이 클래스명.멤버명으로 사용가능
  • 초기화하지 않으면 강제 초기화

지역 변수

  • 메서드에서 선언되며 해당 메서드에서만 사용 가능
  • 스택 메모리 영역에 저장
  • 초기화하지 않으면 출력시 오류 발생

메서드(Method)

정의

제어자 반환타입 메서드명(매개 변수) { 	// 메서드 시그니처
	메서드 내용 			// 메서드 바디
}

-----------------------
//ex)
public static int sum(int x, int y) { // 메서드 시그니처
	int result = x + y; 		// 메서드 바디
	return result;
}
//메서드 명은 관례적으로 소문자로 표기한다

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

메서드 시그니처와 메서드 바디로 구분 가능

return값은 반환타입과 일치하거나 자동 형변환이 가능해야 한다

 

호출

메서드이름(매개변수, 매개변수2, ...); // 매개변수가 없을 수도 있음

sum(5, 6);		 // 위의 sum 메서드 호출
println("\nHello world!");	//미리 정의된 println메서드 호출

//출력결과

11
Hello world! //\n은 escape 문자중 하나로 개행

 

메서드 오버로딩

정의

하나의 클래스 안에 같은 이름의 메서드를 여러 개 정의 하는 것

 

사용 예

public class Test {
    public static void main(String[] args) {
        Human h = new Human(); // 객체 생성
 
        h.celebrity(); 	// 메서드 호출
        h.celebrity(1);
        h.celebrity(true,false);
        h.celebrity(d);
    }
}

class Human {
    public void celebrity() { 	// 메서드 오버로딩
        System.out.println("유재석");
    }
    public void celebrity(int a) {	// 시그니처는 같고 매개변수만 다름
        System.out.println("강호동");
    }

    public void celebrity(boolean b, boolean c) {
        System.out.println("김종국");
    }

    public void celebrity(char d) {
        System.out.println("이경규");
    }
}

//출력

유재석
강호동
김종국 
이경규

같은 메서드명을 가지고 있지만 매개변수의 개수나 타입이 다르게 정의되면 오버로딩 성립

오버로딩을 사용하면 하나의 메서드로 여러 경우의 수를 해결할 수 있다

'development > Java' 카테고리의 다른 글

클래스(Class)와 객체(Object)  (0) 2023.01.14
23.01.04 열거형 enum  (1) 2023.01.05