본문 바로가기
Java

[Java] static과 private, Getter&Setter

by happyhelen 2021. 7. 24.

레퍼런스

생성된 객체의 주소값을 변수에 담고있는 것을 레퍼런스라고 한다

클래스가 같다고해서 레퍼런스 주소값이 같지 않다

다른 공간에 존재하는 객체는 다른 객체이다

ChildClass child = new ChildClass(); // child가 레퍼런스

 

객체가 필요없어지면 Garbage Collector 가 제거함

 

객체와 레퍼런스를 끊어버리는 방법

레퍼런스에 null이 저장되면 객체의 연결이 끊기며 더이상 객체를 사용할 수 없다

child = null;

child.getInfo(); // NullPointerException

레퍼런스는 사라지지 않고 존재하기 때문에 다른 객체와 연결할 수 있다

 

다른 패키지에있는 클래스를 사용하고 싶을 때

-> import 다른 패키지.사용하고싶은 클래스;

-> import 다른 패키지.*; // 모든 클래스 사용

같은 패키지에 있는 클래스는 그냥 사용가능하다

 

어디서나 속성과 메소드를 공유할 수 있는 static 키워드

 

 

데이터 은닉

객체의 데이터를 외부로부터 변경되지 않게 보호하는 private

ex) 급여 담당자가 실수로 급여액을 잘못 입력하는 경우, 고유번호가 변경되는 경우, 변경 불가능한 id

-> 이것을 외부에서 변경할 수 있는 메소드가 setter, getter

사용하는 목적 : 조건을 걸 수 있어서 조건에 맞는 정보만 설정가능

public class No5_Getter$Setter_Speed {
	// 필드, private 데이터은닉이지만 게터세터로 변경가능
	private int speed;
	private boolean stop; //초기값 false
	
	// 디폴트생성자
	
	// 메소드
	// speed 게터세터
	public int getSpeed() {
		return speed;
	}
	
	// 사용 목적 : 조건을 걸 수 있음
	public void setSpeed(int speed) {
		if(speed <0) {
			this.speed =0;
			return;
		} else {
			this.speed = speed;
		}
	}
	
	// stop 게터세터
	public boolean isStop() {
		return stop;
	}
	
	public void setStop(boolean stop) {
		this.stop = stop;
		this.speed =0;
	}
	
}