[final] : 재할당이 불가능하도록 변수를 선언하기 위한 키워드
final 키워드를 사용 시, 해당 변수는 재할당이 불가능하다. 다시말해서 처음 선언에서 할당이 동시에 이루어지는 초기화가 필요하다
[static] : 클래스로부터 생성되는 모든 객체의 static 변수, 메서드는 다른 객체에서도 동일한 값, 기능을 하도록 하는 키워드
ex) 만약 Person 클래스에 name 필드를 static으로 선언하고 p1 p2 객체를 생성하고 두 객체에서 name 필드에 재 할당을 진행하면 두 필드 모두 마지막으로 할당한 값으로 출력된다. 이해가 안간다면 아래 코드 예시를 확인해보자.
public class Person {
static String name;
}
public void main() {
Person p1 = new Person();
Person p2 = new Person();
p1.name = "홍길동";
p2.name = "코난";
System.out.println(p1.name + " " + p2.name);
}
다음 코드를 확인해보자. 단순하게 해당 코드의 main문을 확인해 보면 p1, p2 각각의 객체에 name 필드에 "홍길동", "코난"을 할당해주었다. 출력문으로 "홍길동", "코난"이 나올 것 같지만, Person 클래스에서 name 필드는 static으로 선언되었기 때문에
가장 마지막으로 할당해준 "코난"이 2번 출력된다.
[그러면 static은 어느 상황에서 유용하게 사용되는지]
내가 원하는 클래스를 만들고 여러개의 객체가 생성된다고 하자.
이때 객체마다 모든 필드값이 다르게 관리할 수도 있지만, 어떤 필드에 경우에 어떤 변화가 생겼을 때
모든 객체에 해당 필드의 값을 동일하게 재할당을 해주어야하는 경우에 사용하면 유지보수가 유용하다.
ex) 저번에 붕어빵을 예시로 든적이 있다.
붕어빵 클래스는 반죽재료, 속재료의 필드를 가지고 있다고 할 때, 해당 회사에서 반죽재료는 모든 붕어빵 종류에 동일하게
적용된다고 하자.
만약 static을 사용하지 않고 반죽재료 필드가 선언이 되어있다면 나중에 반죽재료 필드의 값을 바꾸려고 할 때,
모든 객체 하나하나 반죽재료 필드값을 동일한 값으로 재할당 해주어야 할 것이다.
하지만 static으로 선언을 한다면,
붕어빵.반죽재료 = "곡물";
다음과 같은 코드 한줄로 모든 객체의 반죽재료 필드 값을 변경해 줄 수 있다.
그리고 위 코드를 확인해보면 알 수 있듯, static으로 선언된 변수 및 메서드는 객체생성없이 클래스명.변수/메서드명으로 바로 참조가 가능하다.
[static final]
위에서 설명한 static, final 두가지 키워드를 동시에 사용할 수 있다.
해당 구문은 프로그램 시작부터 종료까지 재할당이 불가능한 변수를 만드는 키워드로, "상수"라고 표현한다. 주로 상수는 대문자로 변수명을 설정하여 선언한다.
'JAVA' 카테고리의 다른 글
| [JAVA] 상속 / 추상메서드 (8) (0) | 2025.05.22 |
|---|---|
| [JAVA] 생성자 / 오버로딩 (6) (1) | 2025.05.20 |
| [JAVA] 클래스 / 객체 (5) (0) | 2025.05.20 |
| [JAVA] 배열(4) (0) | 2025.05.20 |
| [JAVA] 형변환 메서드(3) (1) | 2025.05.19 |