메뉴
brunch
매거진
JAVA 그림책
정적(static) 멤버
by
그림으로 보는 IT 이야기
Oct 10. 2024
* 이 내용은 철저히 초심자를 위해 알기 쉽게 설명하는 것을 목적으로 하고 있습니다.
* 더 정확하고 자세한 개념은 다른 고수님들의 글들을 참고하시길 바랍니다.
* 그리고 이 글에서는 코드 최소한으로 다루고 있습니다.
이전 시간에 멤버 필드에 대해서 배워 보았습니다.
멤버 필드는 객체가 생성되어 사라질 때까지 유지되는 변수라 하였죠?
잔인
한 비유일 수 있지만, 사람도 죽으면 그 사람의 기억이 모두 사라지는 것과 같다고 볼 수 있습니다.
하지만 너무도 중요한 지식이라면 그 사람의 수명과 함께 끝나는 것은 너무 아깝다는 생각이 들 수 있습니다.
그래서 우리는 별도의 기록을 하게 됩니다.
유명한 사람들은 자신의 지식을
책 등의
기록으로 남기게 되죠?
다시 객체의 이야기로 들어가 보겠습니다.
객체는 클래스의 복사본이라고 했습니다.
그렇기 때문에 복사본이 사라지면 복사본 안에 있는 내용도 사라지게 됩니다.
하지만 그 내용이 원본에 저장되어 있다면?
복사본의 내용이 사라진다 하여도 원본에 남아 있기에 해당 값은 사라지지 않습니다.
이렇게 원본 영역에 저장되어 있는 클래스의 멤버들을 static 멤버라고 부릅니다.
여기서 static 은 클래스 원본이 저장되는 영역인 것은 이미 알고 있죠?
static 멤버와 객체 멤버 차이점
static 멤버는 일반 객체의 멤버와는 차이점이 있습니다.
첫 번째로 static이라는 키워드가 붙습니다.
나는 원본 영역에 저장되는 멤버야!
라는걸 알려 주는 것이죠
두 번째로 static 은 원본 영역에 있기 때문에 불러올 때 객체의 이름이 아닌, 원본 클래스의 이름으로 불어와야 합니다.
Puppy 클래스의 goal 은 일반 멤버이기 때문에 복사본인 p를 통해 값을 넣지만,
name 은 static 멤버 이기 때문에 원본인 Puppy를 불러서 값을 넣어야 합니다.
나중에 넣은 값을 확인할 때도 마찬가지죠.
세 번째로 static 멤버는 원본영역에 있는 멤버 이기 때문에 객체화 후 사용되는 생성자를 통해서 초기화할 수 없습니다.
생성자는 복사본 영역에, static 은 원본영역에 있기 때문에 서로가 닿을 수 없는 것이죠!
같은 클래스에 있다 해도 영역이 다르기에 서로 소통이 불가능합니다.
같은 공간에 있어도 다른 차원에 존재하기 때문에 소통할 수 없는 것과 같습니다.
인터스텔라에서 비슷한 장면이 나오죠?
그리고 마지막으로 이 static 멤버는 필드뿐 아니라 메서드도 포함됩니다.
그래서 호출할 때 원본 클래스 명을 불러서 사용하는 것은 변함없습니다.
복사본인 객체가 죽더라도 계속해서 존재할 수 있는 static 멤버에 대해서 알아보았습니다.
static 이 붙은 멤버는 일반 멤버와 사는 영역이 다르다.
이것만 확실히 기억해 두도록 합시다.
keyword
멤버
프로그래밍
java
7
댓글
댓글
0
작성된 댓글이 없습니다.
작가에게 첫 번째 댓글을 남겨주세요!
브런치에 로그인하고 댓글을 입력해보세요!
그림으로 보는 IT 이야기
직업
개발자
프로그래밍언어를 가르치고 있으며, IT 에 관심있거나 배우는 사람들에게 도움이되기위해 여러 개념들을 그림과 짧은 글을 통해 알기쉽게 설명하려고 노력중입니다.
구독자
17
제안하기
구독
매거진의 이전글
클래스멤버 - 변수
final 키워드
매거진의 다음글