[자바/JAVA] 접근제한자 (modify)

박정현·2023년 9월 2일
0

🏠자바의 기초완성

목록 보기
17/23

접근제한자

접근제한자는 접근제어자라고도 하며 다른 클래스나 패키지에서 접근할 수 있는 정도에 따라 public, protected, defalt, private 4가지 종류가 있다. 여기서 접근이란 클래스나 다른 곳에서 가지고 있는 멤버의 접근을 말한다.

사용자의 민감한 정보는 다른 곳에서 접근하여 사용 및 변경하지 못하도록 막을 필요가 있는데 이때 접근제한자를 사용할 수 있다.

1) 접근제한자 종류

같은 패키지다른 패키지상속같은 클래스
publicOOOO
protectedOXOO
default(생략)OXXO
privateXXXO

① public

외부 클래스와 패키지에서 자유롭게 사용할 수 있다.

protected

같은 패키지 또는 자식 클래스에서 사용할 수 있다.

default

접근제한자를 생략할 때는 defaul 접근제한을 가진다. default접근제한자는 같은 패키지에 소속된 클래스에서만 사용할 수 있도록 한다.

private

외부에서 사용할 수 없고 같은 클래스에서만 사용할 수 있다. 객체지향프로그램의 특징인 캡슐화하는데 사용된다.

💊 캡슐화가 무엇인가요?

캡슐화란 서로 연관되어 있는 속성과 기능을 하나의 캡슐로 만들어 외부로부터 보호하는 것을 말한다. 캡슐화를 통해 외부로부터 클래스에 정의된 속성과 기능을 보호할 수 있고 내부의 동작을 감추고 외부에는 필요한 부분만 노출하는 데이터은닉이 가능하다.


2) 접근제한자 별 사용가능 범위

접근제한자는 클래스, 생성자, 멤버의 변수, 멤버의 메소드에서 사용이 가능하다. 그러나 모두 4가지 종류를 사용할 수 있는 것은 아니다. 아래의 표를 보자,

publicprotecteddefaultprivate
클래스OXOX
생성자OOOO
멤버의 메소드OOOO
멤버의 변수OOOO
지역변수XXXX

여기서 멤버변수와 지역변수를 따로 구분하였는데 멤버변수와 지역변수는 무엇이 다른지 비교해보자!

① 지역변수

지역변수는 메소드 내부에서 선언되어 사용되는 변수를 말한다, 메소드 내부에서 선언된 변수는 메소드 내부에서만 사용이 가능하다. 해당 메소드를 벗어나거나 메소드 실행이 끝나면 메모리에서 사라진다.

지역변수는 초기화하지 않으면 자동으로 해당타입의 기본값으로 초기화된다.

public static void main(String[] args) {
	String name = "김사과"; 
	int age= 20;
	Stirng address; // null로 초기화된다.
}

main메소드안에 변수 name과 phone, address을 선언했으므로 지역변수이다.

② 멤버변수

클래스 영역에서 선언된 변수를 멤버변수라고 한다. 이때 static이 붙으면 클래스변수, static이 붙지 않으면 인스턴스 변수이다. 멤버변수는 클래스변수와 인스턴스변수를 통칭하는 말이다.

멤버변수를 필드, 소속변수, 클래스변수, 속성변수라고도 부른다.

멤버변수를 제외한 나머지 변수들은 모두 지역변수이며, 멤버변수 중에서 static이 붙으면 클래스변수, static이 붙지 않으면 인스턴스 변수로 나뉜다.

class A {
	// 클래스 영역
	String name; // 멤버변수
	static int age; // 멤버변수

	void method1(){
		// 메소드 영역
		String address = "서울특별시"; // 지역변수
	}
}

📚 Reference

신용권, 『혼자공부하는 자』, 한빛미디어(2023)

CodeBlog, https://www.codestates.com/blog/content/객체-지향-프로그래밍-특징

https://velog.io/@mingseok/지역변수-맴버변수

profile
개발을 개발괴발하지 않기 위한 노력

0개의 댓글