카테고리 없음

객체지향 프로그래밍 4. 인스턴스멤버와 정적멤버

코딩펭귄 2023. 12. 8. 15:58

인스턴스멤버

- 인스턴스멤버 = 객체(인스턴스)생성 후 사용할 수 있는 필드와 메소드

this

- 객체 내부에서 인스턴스 멤버에 접근하기 위해 사용

- 생성자와 메소드의 매개변수 이름이 필드와 동일한 경우, 인스턴스멤버인 필드임을 명시하고자 할 때 사용

 

 

정적멤버와 static

- 정적멤버 = 클래스에 고정된 멤버

- 객체를 생성하지 않고 사용할 수 있는 필드와 메소드

정적멤버 선언

- 필드와 메소드 선언시 static 키워드 추가

정적멤버 사용

- 클래스 이름과 함께 도트연산자로 접근

클래스.필드; or 클래스.메소드(매개값, ...);

정적메소드 선언시 주의할 점

- 정적메소드 안에서 인스턴스 멤버 사용하고싶다면 : 1) 객체먼저 생성한 후 2) 참조변수로 접근

- 객체자신의 참조인 this 사용불가능

- main메소드도 위 두가지 규칙이 동일하게 적용됨(main도 정적 메소드임)

 

 

싱글톤

- 전체 프로그램에서 단 하나의 객체만 만들도록 보장해야 하는 경우

- 생성자 앞에 private 추가

- 외부에서 객체를 얻는 유일한 방법 : getInsatnce()메소드를 호출 ( getInsatnce()  = 단 하나의 객체만 리턴함)

 

 

final 필드와 상수

final필드

- 초기값이 저장되면 : 이것이 최종값이 됨 + 프로그램 실행 도중 수정할 수 없다는것

- final필드의 초기값 주는 방법 1 : 필드선언시 주는 방법 ex)단순값

- final필드의 초기값 주는 방법 2 : 생성자에서 주는방법 ex)객체생성시 외부데이터로 초기화해야하거나 복잡할 경우

상수

- 상수 = 불변의 값을 저장하는 필드 

- static 이면서 fianl 이어야 함 (객체마다 존재하지 않고, 클래스에만 존재함 + 한번 초기값 저장되면 변경할 수 없음)

- 상수이름은 모두 대문자로 하는것이 관례