Language/Java

Java 인스턴스 멤버와 정적 멤버

@Eeap 2022. 5. 10. 22:51
반응형
인스턴스 멤버

- 객체마다 가지고 있는 멤버 => 객체를 생성한 후 사용할 수 있는 필드와 메소드

public class Car {
	int gas;
	int speed;
	void setSpeed(int speed) {
		this.speed=speed;
	}
}
public class Test {

	public static void main(String[] args) {
		Car myCar = new Car();
		myCar.gas=10;
		myCar.setSpeed(60);
        //여기선 gas와 setSpeed를 인스턴스 멤버라고 할 수 있음
	}
}
this

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

Car(String mode){
 this.model = model; //car클래스에는 이미 model field가 존재할 경우
}
void setModel(String model){
 this.model = model;
}
정적멤버

- 클래스에 고정된 멤버로서 객체 생성하지 않고 사용할 수 있는 필드와 메소드

- 정적 메소드 선언 시 그 내부에 인스턴스 필드 및 메소드와 this 키워드 사용 불가

- 정적멤버 접근시 인스턴스와 다르게 클래스로 접근해야함

public class Cal {
 static double pi = 3.14;
 static int plus(int x,int y){...}
}
//main 작성 code
double res1 = 10*Cal.pi;
int res2 = Cal.plus(10,5);

 

싱글톤

- 전체 프로그램에서 단 하나의 객체만 만들도록 보장하는 코딩 기법

* 싱글톤 작성 방법

  1. 클래스 외부에서 new로 생성자 호출하는 것을 방지하기 위해서 private 변수 사용
  2. 자신의 타입인 정적 필드 선언 후 자신의 객체 생성해 초기화
  3. 외부에서 호출할 수 있는 getInstance() 선언
  4. 정적 필드에서 참조하는 자신의 객체 리턴
public class Test{
 private static Test singleton = new Test();
 private Test(){}
 static Test getInstance(){return singleton;}
}
final 필드

- 초기값이 저장되면 최종값이 되어 프로그램 실행 도중 수정 불가

인스턴스 필드
-> 객체에 한번 초기화된 데이터를 변경 불가로 만들 경우
final 타입 빌드;   => final String ssn; //생성자에서 초기화

정적 필드
-> 불변의 값인 상수를 만들 경우
static final 타입 상수 = 초기값;  => static final double pi =3.14;
반응형