Cute Running Puppy

Language/[Java] 혼자 공부하는 자바

[혼자공부하는자바] chapter 06-5. 인스턴스 멤버와 정적 멤버

R.silver 2021. 7. 19. 18:32
반응형

[혼자공부하는자바] chapter 06-5. 인스턴스 멤버와 정적 멤버

인스턴스 멤버  정적 멤버
객체마다 가지고 있는 멤버 클레스에 위치시키고 객체들이 공유하는 멤버

인스턴스 멤버와 this

인스턴스 멤버: 객체를 생성한 뒤 사용할 수 있는 필드와 메소드 

-> 객체 없이는 사용 불가 

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

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

정적 멤버와 static

정적 멤버: 클래스에 고정된 멤버, 객체를 생성하지 않고 사용할 수 있는 필드와 메서드

//정적 멤버 선언 방법

public class 클래스 {

    //정적 필드
    static 타입 필드 [ =초기값];

    //정적 메서드
    static 리턴 타입 메소드 ( 매개변수선언, ...) { ... }
}
//정적 멤버 사용 방법

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

정적 멤버는 클래스 이름과 도트(.) 연산자로 접근할 수 있다. 

정적 멤버는 객체 참조 변수로 접근할 수 있는데 이렇게 사용하면 경고 표시가 뜬다. 

그러므로 클래스 이름으로 접근하는 것이 가장 좋다. 

정적 메소드 선언 시 주의할 점 
  1. 정적 메소드 내부에서 인스턴스 필드나 인스턴스 메소드를 사용할 수 없다.
  2. 정적 메소드에서 인스턴스 멤버를 사용하고 싶다면 객체를 먼저 생성하고 참조 변수로 접근해야 한다. 

싱글톤

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

 

클래스 외부에서 new 연산자로 생성자를 호출할 수 없도록 막아야 한다. 

//싱글톤 만드는 방법

public class 클래스 {
    //정적 필드
    private static 클래스 singleton = new 클래스();

    //생성자
    private 클래스 () { }

   //정적 메소드
   static 클래스 getInstance() {
        return singleton;
    }
}

final 필드

final 필드: 초기 값이 저장되면 프로그램 실행 도중에 변경할 수 없는 필드

//final 필드 선언 방법

final 타입 필드[= 초기값];

final 필드의 초기값을 줄 수 있는 방법

  1. 필드 선언 시 초기값 주기
  2. 생성자에서 초기값 주기 
반응형