학습목표
- 필드를 이해하고, 세가지 종류의 변수를 구분할 수 있다
- 변수가 저장되는 위치를 설명하고, 차이를 설명할 수 있다
- 메서드를 이해하고 구성요소와 호출에 대해 설명할 수 있다
- 오버로딩을 이해하고 장점을 설명할 수 있다.
필드(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 |