어떤 메서드에는 static이 들어가고 어딘 안들어가서 무슨 차이인지 궁금하고
어떤 메서드는 사용전 굳이구태어 Random random = new Random();
라고 new를 붙여서 객체화를 해야하는것이 비유를 하자면
자바는 함수를 내가 만들었다고 해도 그건 설계도일 뿐이고 그걸 사용하려면 객체를 생성해서 그 함수(설계도)대로 돌아가는 기계를 만들어놓고
거기에 인수를 넣어야 한다는것이고
new는 그 설계도 대로 새로운 기계를 만들라는 지시인거고
static은 자바에 이미 기본적으로 함수들이고 메모리가 이미 할당되어있기에 new를 통해서 기계를 만들지 않아도 언제든 사용할 수 있다?
맞나요?
그리고 난 함수라고 생각했는데 다들 메서드메서드 이러는데 걍 자바에선 함수를 메서드라고 부를 뿐인건지 명확히 다른건지도 궁금
static은 클래스의 인스턴스를 만들지 않아도 써도되는 그런 키워드
new는 그 인스턴스를 생성하는 키워드
맞게 이해한건가
필드가 객체의 상태를 담고있고, 메서드가 이를 수정하는 역할이라면, static은 객체의 상태와 관련이 없는 것들이 들어감. 그래서 객체생성없이도 호출할수있고 ㅇㅇ 메서드는 멤버 함수라고 보면 됨. 함수긴 함수이되 멤버인 함수를 메서드라고 하고 변수이되 멤버인 멤버변수를 필드라고한다
가령 지뢰찾기를 만든다고 치자, 지뢰 객체를 100개 만들어서 뿌려. 그런데 지뢰가 몇개남아있는지 알려줘야하잖아? 그럼 지뢰 객체에 스태틱 필드를 넣어서 생성할때마다 count++; 해주고, 객체가 소멸할 때 count--; 해주면 따로 객체 수를 세는일을 하지 않아도 되겠지
스태틱 필드나 메서드에서는 지뢰 하나하나의 좌표에는 접근이 불가능하겠지? 객체 생성을 전제로 한 필드가 메서드가 아니니까
정리하자면 100개의 지뢰중 하나하나에 해당하는건 객체의 일반 메서드나 필드를 이용하고, 모두가 공유하는, 하나의 객체만의 특징이 아닌건 static 키워드를 쓸 수 있다