필드(Field)와 메서드(Method)란?
자바에서 변수는 크게 다음 3가지로 구분된다.
- 클래스 변수
- 인스턴스 변수
- 지역 변수
객체의 속성을 정의하는 필드는 '클래스에 포함된 변수'를 지칭한다.
필드 변수는 클래스 변수와 인스턴스 변수를 말한다.
이 둘은 static 키워드의 유무로 구분할 수 있다.
staic 키워드가 함께 선언된 것은 클래스 변수,
그렇지 않은 것은 인스턴스 변수이다.
이 두 가지 변수에 포함되지 않고, 메서드 내에 포함된 모든 변수를 지역 변수라고 한다.
인스턴스 변수는 인스턴스가 가지는 각각의 고유한 속성을 저장하기 위한 변수이다.
인스턴스 변수는 new 키워드를 이용해 인스턴스가 생성될 때 만들어진다.
필드(멤버) 변수는 힙 메모리 영역에,
지역 변수는 스택 메모리에 저장이 된다.
힙 메모리에 저장되면 객체가 없어지지 않는 한 절대로 삭제되지 않는다.
스택 메모리에 저장되면 한동안 사용되지 않는 경우 Garbage Collector에 의해 자동으로 삭제된다.
지역 변수는 멤버 변수와 다르게 스택 메모리에 저장되고,
메서드가 종료됨과 동시에 소멸되어 사용할 수 없게 된다.
지역 변수의 특징은 다음과 같다.
- 휘발성(메서드 바디 안에서만 유효)
- 초기화 필수
필드 변수와 지역 변수의 한 가지 차이점은 초기값에 있다.
힙 메모리 영역에 저장되는 필드 변수의 경우,
힙 메모리 영역에는 빈 공간이 저장될 수 없기 때문에,
자동으로 초기화가 된다.
스택 메모리 영역에 저장되는 지역 변수의 경우,
강제로 초기화가 되지 않기 때문에,
선언 시에 반드시 초기화를 해주어야 한다.
static 키워드는 클래스의 멤버(필드, 메서드, 이너 클래스)에 사용된다.
하나의 고유한 값을 공유하고 싶다면 static 키워드를 사용하는 게 좋다.
static 키워드가 붙어 있는 멤버를 '정적 멤버'라고 부른다.
정적 멤버의 가장 큰 특징은 인스턴스를 따로 생성하지 않아도,
클래스 명만으로도 변수나 메서드 호출이 가능하다는 것이다.
반대로, 인스턴스 멤버는 반드시 인스턴스를 생성해야 변수와 메서드에 접근하여 해당 멤버를 사용할 수 있다.
메서드는 '특정 작업을 수행하는 명령문들의 집합'을 의미한다.
메서드는 크게 2가지로 구성된다.
- 메서드 시그니처
- 메서드 바디
- 반환타입 : 어떤 타입으로 반환할 것인지
- 메서드 명 : 메서드 명은 어떻게 할 것인지 (기능을 중심으로 명명한다)
- 매개변수 : 메서드를 수행하기 위해 어떤 것이 필요한지
메서드의 반환타입이 void가 아닌 경우에는 메서드 바디에 return문이 존재해야 한다.
return문은 수행한 결과값을 호출한 메서드로 전달한다.
결과값은 반드시 반환타입과 일치하거나 적어도 자동 형변환이 가능한 것이어야 한다.
메서드 생성 시에 무슨 값을 넣어줘야 하는지는 '매개변수(parameter)'
메서드 호출 시에 넣어주는 입력 값을 '인자(argument)'
보통 메서드를 호출하는 방법은 인스턴스를 생성하고, 포인트 연산자(.)를 통해 메서드를 호출할 수 있다.
static 메서드는 인스턴스 생성 없이, 클래스를 참조하여 호출할 수 있다.
메서드 오버로딩은 '하나의 클래스에 같은 이름의 메서드를 여러 개 정의하는 것'을 말한다.
메서드 오버로딩의 조건은 다음과 같다.
- 메서드의 이름이 같아야 한다.
- 매개변수의 개수 또는 타입이 달라야 한다.
메서드의 가장 큰 장점은 하나의 메서드로 여러 경우의 수를 해결할 수 있다는 것이다.
내용에 대해 더 깊게 알게 되면, 내용을 더 추가할 예정입니다.
피드백 환영합니다!