새소식

Java

[Java] 변수 선언과 접근제한

  • -

 

 

1. 변수 선언

 

1)    변수 선언의 개념

데이터를 저장하고 참조하기 위해 메모리 공간을 할당하는 과정

 

변수는 이름을 가지며, 그 이름을 통해 해당 메모리 공간에 저장된 값을 읽거나 변경할 수 있습니다.

 

 

 

 

 

2)    변수선언의 방법

변수를 선언하기 위해서는 변수의 이름과 데이터 타입을 지정해야 합니다.

 

 

<변수 선언 방법>
데이터 타입 변수이름; 
<변수 선언 방법2> → 선언하여 초기값까지 주기
데이터 타입 변수이름 = 초기값

 

<예시>
int age; // 정수형 변수 age를 선언
double pi = 3.14159; // 실수형 변수 pi를 선언하고 초기값 3.14159 할당
String name = "John"; // 문자열 변수 name을 선언하고 초기값 "John" 할당
boolean isRaining = true; // 불리언 변수 isRaining을 선언하고 초기값 true 할당

 

 

 

 

 

3)    변수선언의 스코프

변수는 선언된 범위 내에서 유효하며, 해당 범위를 벗어나면 메모리에서 해제됩니다. 이를 변수의 스코프(scope)라고 합니다.

스코프는 변수가 접근 가능한 영역을 제한하는데, 전역 변수와 지역 변수가 일반적으로 가장 많이 사용되는 스코프입니다.

 

 

① 전역 변수 (Global Variable)

전역 변수는 클래스 블록 안에서 선언되지만, 어떤 메서드나 블록 내에서도 접근할 수 있는 변수입니다.

전역 변수는 클래스의 인스턴스 변수로 선언되거나, static 키워드와 함께 클래스 변수로 선언됩니다.

<예시>
public class ExampleClass {
int count; // 인스턴스 변수 (전역 변수)

public static int globalCount; // 클래스 변수 (전역 변수)

public void increment() {
count++; // 인스턴스 변수 접근
globalCount++; // 클래스 변수 접근
     }
}

countExampleClass의 인스턴스 변수로 선언되어 클래스 내부의 모든 메서드에서 접근할 수 있습니다.
 
globalCountstatic 키워드로 선언되었으므로 클래스 변수로 선언되었으며, 클래스의 모든 인스턴스에서 공유됩니다.
 
 
 
 
 

② 지역 변수 (Local Variable)

지역 변수는 메서드, 생성자, 블록 내에서 선언되고 해당 블록 내에서만 유효한 변수입니다.

<예시>
public class ExampleClass {
public void myMethod() {
int age = 30; // 지역 변수
System.out.println(age);
}

public void anotherMethod() {
// age 변수에 접근 불가 (범위를 벗어났기 때문에)
     }
}

agemyMethod 메서드 내에서 선언된 지역 변수로, myMethod 메서드 블록 내에서만 유효합니다.

다른 메서드에서는 age 변수에 접근할 수 없습니다.

 
 

 

 

 

 

2. 접근제한자

 

1)    접근제한자의 개념

접근 제한자(Access Modifier)는 클래스, 멤버 변수, 메서드 등의 접근 가능성을 제어하는 데 사용됩니다.

 

 

2)    접근제한자의 종류

① public

public은 접근 제한자 중 가장 넓은 범위로,

클래스, 멤버 변수, 메서드에 public 접근 제한자를 사용할 경우,

해당 멤버는 클래스 내부 및 외부, 동일 패키지, 하위 클래스, 다른 패키지에서 모두 접근할 수 있습니다.

 

<예시 - Class에서의 public>
// MyClass.java
public class MyClass {
// 클래스 내용...
}

public 접근 제한자를 가진 클래스는 다른 패키지에 속한 클래스에서도 인스턴스화할 수 있습니다.
클래스 이름과 소스 코드 파일 이름은 동일해야 합니다.
<예시 - Method에서의 public>
public class MyClass {
public void myMethod() {
// 메서드 내용...
     }
}

public 접근 제한자를 가진 메서드는 다른 클래스에서 호출할 수 있습니다. 
메서드 이름과 매개변수 목록, 반환 유형은 호출하는 쪽과 일치해야 합니다.
<예시 - 변수에서의 public>
public class MyClass {
public int myVariable;
}


public 접근 제한자를 가진 변수는 다른 클래스에서 해당 변수에 직접 접근할 수 있습니다.

 

 

 

② Protected

클래스 내부, 동일 패키지, 하위 클래스에서는 접근 가능하지만,

다른 패키지에서는 접근할 수 없습니다.

<예시 - Class에서의 protected>
// MyClass.java
public class MyClass {
// 클래스 내용...
}

클래스에는 protected 접근 제한자를 직접 적용할 수 없습니다.
<예시 - Method에서의 protected>
public class MyClass {
protected void myMethod() {
// 메서드 내용...
     }
}

protected 접근 제한자를 가진 메서드는 같은 패키지 내의 다른 클래스에서 호출할 수 있으며,
또한 하위 클래스에서도 호출할 수 있습니다.
<예시 - 변수에서의 protected>
public class MyClass {
protected int myVariable;
}

protected 접근 제한자를 가진 변수는 같은 패키지 내의 다른 클래스에서 직접 접근할 수 있으며,
또한 하위 클래스에서도 직접 접근할 수 있습니다.

 

 

 

 

 

③ private

해당 멤버(변수, 메서드)가 선언된 클래스 내부에서만 접근 가능하도록 설정하고,

외부 클래스나 상속 관계에 있는 하위 클래스에서 직접 접근할 수 없습니다.

<예시 - Class에서의 private>
// MyClass.java
public class MyClass {
// 클래스 내용...
}

클래스는 private 접근 제한자를 직접 적용할 수 없습니다.
<예시 - Method에서의 private>
public class MyClass {
private void myMethod() {
// 메서드 내용...
     }
}

private 접근 제한자를 가진 메서드는 해당 클래스 내부에서만 호출할 수 있습니다.
외부 클래스나 하위 클래스에서는 호출할 수 없습니다.
<예시 - 변수에서의 private>
public class MyClass {
private int myVariable;
}

private 접근 제한자를 가진 변수는 해당 클래스 내부에서만 직접 접근할 수 있습니다. 외부 클래스나 하위 클래스에서는 접근할 수 없습니다.

 

 

 

 

 

④ default (package)

해당 멤버(클래스, 변수, 메서드)가 동일한 패키지 내의 다른 클래스에서만 접근 가능하도록 설정합니다.

default 접근 제한자를 사용하면 해당 멤버가 속한 패키지 내에서만 접근 가능하도록 제한할 수 있습니다.

접근 제한자를 명시하지 않으면 default 접근 제한자가 적용됩니다. → 기본값으로 적용

<예시 - Class에서의 default>
// MyClass.java
class MyClass {
// 클래스 내용...
}

default 접근 제한자를 가진 클래스는 동일한 패키지 내의 다른 클래스에서만 인스턴스화할 수 있습니다.
<예시 - Method에서의 default>
class MyClass {
void myMethod() {
// 메서드 내용...
     }
}

default 접근 제한자를 가진 메서드는 동일한 패키지 내의 다른 클래스에서만 호출할 수 있습니다.
<예시 - 변수에서의 default>
class MyClass {
int myVariable;
}

default 접근 제한자를 가진 메서드는 동일한 패키지 내의 다른 클래스에서만 호출할 수 있습니다.
 
 

 

⑤ 접근제한자 정리표

  접근가능 여부
접근제한자 클래스 내부 동일 패키지 하위 클래스 다른 패키지
public O O O O
protected O O O X
private O X X X
default (package) O O X X

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2023.06.16 - [Java] - 변수의 개념과 타입

 

변수의 개념과 타입

1. 변수 1) 변수의 개념 변수(Variable) = 값을 저장하기 위해 사용되는 이름이 있는 메모리 위치 데이터를 저장하고 참조할 수 있는 방법을 제공하여 프로그램의 유연성 및 가독성 UP↑ 2) 변수의 타

devwarriorjungi.tistory.com

 

 

 

 

 

 

 

'Java' 카테고리의 다른 글

[Java] List 리스트의 개념과 종류  (0) 2023.07.03
[Java] 객체 지향 프로그래밍  (0) 2023.06.20
[Java] 클래스 선언 및 생성자  (0) 2023.06.19
[Java] 변수 타입 변환  (0) 2023.06.19
[Java] 변수의 개념과 타입  (1) 2023.06.16
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.