본문 바로가기

Java/이론

[Java] 접근 제어자(Access Modifier)

접근 제어자(Access Modifer)는 외부에서(멤버변수, 클래스 등에)

접근하지 못하도록 제한하는 역할을 합니다.

접근제어자가 사용될 수 있는 곳은 클래스, 멤버변수, 메서드, 생성자입니다.

 

종류는 4가지가 있습니다.

private - 같은 클래스 내에서만 접근이 가능하다.

default - 같은 클래스나 같은 패키지에서 접근 가능하다. (접근 제어자를 쓰지 않은 상태)

protected - 같은 패키지나 다른 패키지라면 그 하위 클래스에서 접근이 가능하다.

public - 접근 제한이 없음.

 

접근 범위를 표현하면 

private < default < protected < public

이렇습니다.

 

실습을 통해 확인해보겠습니다.

package com.puft.dec123.main;

public class Dog {

public int a;

protected int b;

int c;

private int d;

}

 

Dog라는 클래스를 만들어서

각자 다른 접근제어자를 갖도록 

변수를 생성했습니다.

 

package com.puft.dec132.main;

import com.puft.dec123.main.Dog;

public class AMain1 extends Dog

{ public static void main(String[] args) {

Dog dog = new Dog();

dog.a = 1;

dog.b = 2;

dog.c = 3;

dog.d = 4;

}

}

 

그리고 다른패키지에서 Dog를 상속 받아서 

에러가 뜨는지 확인해 보았습니다.

초록색 부분이 에러가 떴는데요.

먼저 a는 public은 접근 제한이 없으니 오류가 안납니다.

b는 protected로 선언된 변수라

같은 패키지나 다른 패키지의 하위 클래스에서 접근 가능한데

Dog가 상위 클래스이기 때문에 접근할 수 없습니다.

c는 default로 선언되었는데

같은 클래스나 패키지에 없기 때문에 접근할 수 없습니다.

d는 private로 

같은 클래스에 있지 않기 때문에

접근이 불가능 합니다.

 

접근 제어자에 대해 알아보았는데요.

접근 제어자인 private을 사용하면 캡슐화를 통해서

객체의 데이터를 숨겨서 외부에서 접근할 수 없게 만듭니다.

따라서 불필요한 접근을 막아서 보안성이 강화되고

내부 클래스를 수정해도 외부에 영향을 미치지 않기 때문에

유지보수성이 향상됩니다.

따라서 조건에 따라서 접근 제어자를 적절히 사용하는 것이 좋을 것 같습니다.

 

'Java > 이론' 카테고리의 다른 글

[Java] 추상화 (abstract)  (0) 2024.12.13
[Java] 캡슐화(Encapsulation)  (0) 2024.12.13
[Java] 상속(Inheritance)  (0) 2024.12.12
[Java] A has B  (0) 2024.12.12
[Java] 생성자  (0) 2024.12.11