20/10/29

5567 단어 TILTIL

멤버 접근 연산자

클래스 Point의 인스턴스 p1을 예시로 보면 아래와 같다.

p1.x=100;
p1.y=200;
// 위에서 쓰인 . 을 멤버 접근 연산자라고 한다.

멤버변수(필드라고도 함)에 들어있는 데이터를 객체의 상태라고 한다.

접근 지정자(제어자)(Access Modifier)

public, private, protected, default.
클래스를 경계로 내부의 멤버(변수, 메서드)를 외부에 공개할지를 결정하는 보안 단계

public

클래스(객체)의 울타리를 경계로 외부에 멤버를 100% 공개

private

클래스(객체)의 울타리를 경계로 외부에 멤버를 100% 비공개. 외부에서 접근 불가능. 접근하면 위험한 중요정보를 보호하기 위해.

class Item{
	public int a;
	private int b; // 캡슐화되어 외부에 비공개된 상태
}

변수는 private으로, 변수 설정 메서드는 public으로(인터페이스 메서드)

class Dog{
	public String name;
	public int age;
	public String color;
}

이렇게 멤버변수를 전부 public으로 선언하면 잘못된 상황을 발생시킬 수 있기 때문에 주의를 요한다. 그렇기 때문에 변수는 private로 설정하고, public메서드를 통해 변수에 값을 넣는다. 감춰진 내부와 공개된 외부를 연결해주는 것이 인터페이스. 이 public메서드가 인터페이스역할을 하는 메서드이다. 변수를 설정하는 인터페이스 메서드를 setter라고도 한다. 이 메서드를 통해서 아래와 같이 유효하지 않은 값으로 변수를 설정하려고 할 때, 제어를 해줄 수 있다.

public void setAge(int age) {
	if (age>=0 && age<=25) {
		this.age=age;
	}else {
		System.out.println("강아지 나이로 올바르지 않습니다.");
	}
}

변수를 설정할 때와 마찬가지로 getter를 통해 변수의 값을 가져올 수 있다.

public String getName() {
	return this.name;
}
	
public int getAge() {
	return this.age;
}
	
public String getColor(){
	return this.color;

this(객체지정연산자)

멤버변수와 매개변수를 구분하기 위해(지역변수와 멤버변수의 충돌을 막기 위해) 사용. 객체 자신을 가리키는 연산자.
(같은 식별자가 충돌하면 항상 지역이 좁은 식별자가 우선한다.)

getter와 setter

두 개 모두 구현되어있으면 읽기/쓰기 필드이고, setter만 있으면 쓰기 전용 필드, getter만 있으면 읽기 전용 필드.(getter는 설정은 못하기 때문에 기본값을 가지고 있는 경우 사용)

계산된 프로퍼티

객체의 멤버 변수(데이터)와 setter, getter를 아울러 Property 혹은 Attribute이라고 한다.

좋은 웹페이지 즐겨찾기