본문 바로가기

Language/JAVA

[JAVA] 변수 유효 범위, this와 접근 제어자(public, protected, private)

JAVA 변수 유효 범위, this와 접근 제어자(public, protected, private)

변수의 유효 범위, this 키워드와 접근 제어자에 대해 알아봅니다.

 


 

변수의 유효 범위

특정 변수를 사용할 수 있는 범위를 변수의 유효 범위라고 합니다.

블럭 내에서 선언한 변수는 블럭 안에서만 사용 가능하므로 유효 범위는 블럭이고,

함수 내에서 선언한 변수는 함수 내부에서만 사용 가능하므로 유효 범위는 함수 내부입니다.

class Person {
	void calc() {
    	int sum = 0;	// sum 유효범위 : calc() 메소드
        
        for (int i = 0; i < 5; i += 1) {	// i 유효범위 : for 블럭
        	// loop
        }
    }

}

 

클래스의 멤버변수는 클래스에서 전역으로 선언되었기에 해당 클래스 내에서 사용 가능하고,

멤버함수가 속한 클래스에 멤버변수가 있다면, 멤버함수에서 클래스의 멤버변수에 접근할 수 있습니다.

 


 

this

클래스 멤버변수의 유효 범위는 클래스 내부이죠.

유효 범위가 멤버함수인 변수 A가 클래스 멤버변수 B와 이름이 같다면, 멤버함수에서 멤버변수 B에 어떻게 접근할까요?

바로 this 키워드를 사용합니다.

this 키워드는 자기 자신, 해당 객체를 지칭하는 키워드입니다.

class Person {
	int age;
    
    void calc(int age) {
    	this.age = age + 10;	// 멤버변수 age = 지역변수 age + 10
    }
}

 

this()

클래스의 this()는 해당 객체의 생성자를 지칭합니다.

this() 생성자는 반드시 this 멤버변수보다 상단에 위치해야 합니다.

 


 

접근 제어자

자바는 객체지향언어이므로 캡슐화가 가능하다는 특징이 있습니다.

클래스 요소(멤버변수, 멤버함수) 중에서 외부에 공개하여 접근이 가능하도록 정의하고 싶은 요소와

해당 객체에서만 접근할 수 있고 외부에서는 접근할 수 없도록 정의하고 싶은 요소에 대해

제한할 수 있습니다.

❗접근제어자를 명시하지 않으면 package로 설정됩니다.

public

외부에 공개하여 누구나 접근이 가능합니다.

protected

관계있는 클래스에만 공개합니다.

클래스 간 상속관계인 객체와 같은 패키지 내의 객체들만 접근 가능합니다.

package

같은 패키지 내의 객체들만 접근 가능합니다.

private

외부에서 접근이 불가능한, 해당 클래스 내에서만 접근이 가능합니다.

 

접근제어자 별 사용범위

접근제어자 클래스 내부 동일 패키지 하위 클래스 그 외
public O O O O
protected O O O X
package(default) O O X X
private O X X X

 

728x90