객체지향 프로그래밍 4. 인스턴스멤버와 정적멤버
인스턴스멤버
- 인스턴스멤버 = 객체(인스턴스)생성 후 사용할 수 있는 필드와 메소드
this
- 객체 내부에서 인스턴스 멤버에 접근하기 위해 사용
- 생성자와 메소드의 매개변수 이름이 필드와 동일한 경우, 인스턴스멤버인 필드임을 명시하고자 할 때 사용
정적멤버와 static
- 정적멤버 = 클래스에 고정된 멤버
- 객체를 생성하지 않고 사용할 수 있는 필드와 메소드
정적멤버 선언
- 필드와 메소드 선언시 static 키워드 추가
정적멤버 사용
- 클래스 이름과 함께 도트연산자로 접근
클래스.필드; or 클래스.메소드(매개값, ...);
정적메소드 선언시 주의할 점
- 정적메소드 안에서 인스턴스 멤버 사용하고싶다면 : 1) 객체먼저 생성한 후 2) 참조변수로 접근
- 객체자신의 참조인 this 사용불가능
- main메소드도 위 두가지 규칙이 동일하게 적용됨(main도 정적 메소드임)
싱글톤
- 전체 프로그램에서 단 하나의 객체만 만들도록 보장해야 하는 경우
- 생성자 앞에 private 추가
- 외부에서 객체를 얻는 유일한 방법 : getInsatnce()메소드를 호출 ( getInsatnce() = 단 하나의 객체만 리턴함)
final 필드와 상수
final필드
- 초기값이 저장되면 : 이것이 최종값이 됨 + 프로그램 실행 도중 수정할 수 없다는것
- final필드의 초기값 주는 방법 1 : 필드선언시 주는 방법 ex)단순값
- final필드의 초기값 주는 방법 2 : 생성자에서 주는방법 ex)객체생성시 외부데이터로 초기화해야하거나 복잡할 경우
상수
- 상수 = 불변의 값을 저장하는 필드
- static 이면서 fianl 이어야 함 (객체마다 존재하지 않고, 클래스에만 존재함 + 한번 초기값 저장되면 변경할 수 없음)
- 상수이름은 모두 대문자로 하는것이 관례