[JAVA] 접근제어자

Coastby·2022년 8월 7일
0

JAVA

목록 보기
17/33

자유와 규제
규제 : 추상 클래스, final, 접근 제어자, 인터페이스와 같은 규칙을 통해 체계적인 프로그래밍을 할 수 있다.

○ 문법

키워드 private으로 시작되는 메소드는 클래스 밖에서는 접근할 수 없다. 이 private 의 자리에 오는 것들을 접근 제어자 (access modifier)라고 한다. 아래의 코드에서 System.out.println(a.x()); 은 클래스 내부에서는 z()에 접근을 하면서 외부에서도 접근이 가능하여 정상 동작하게 된다.

class A {
	public String y () {
		return "public void y()";
	}
	private String z() {
		return "putblic void z()";
	}
	public String x() {
		return z();
	}
.
.
.
public class AccessDemo1 {

	public static void main(String[] args) {
		A a = new A();
		System.out.println(a.y());
		System.out.println(a.z());
		System.out.println(a.x());
.
.

//오류
Exception in thread "main" java.lang.Error: Unresolved compilation problem: 
	The method z() from the type A is not visible

애플리케이션이 로직을 보호하기 위해 객체를 사용하는 입장 (사용자)에서 객체 내부적으로 사용하는 변수나 메소드에 접근을 차단하는 것이 필요하다. 또한 사용자에게 객체를 조작할 수 있는 수단만을 제공함으로써 결과적으로 객체의 사용에 집중할 수 있도록 돕기 위함도 있다. 몰라도 되는 것은 몰라도 된다.

○ 멤버의 접근 제어자

접근제어자는 클래스의 멤버 (메소드, 변수)의 접근 권한을 지정한다.

  • public : 다른 패키지에서도 접근이 가능하다.
  • private : 같은 클래스 내에서만 접근이 가능하다.
  • default : 접근제어자를 지정하지 않았을 때를 의미한다. 같은 패키지 내에 있는 클래스에서만 접근을 허용한다.
  • protected : 상속관계에 있다면 다른 패키지의 클래스에서도 접근이 가능하다.

○ 클래스의 접근 제어자

접근 제어자가 public인 클래스는 다른 패키지의 클래스에서도 사용할 수 있고, default인 경우는 같은 패키지에서만 사용 가능하다.

public class의 클래스명과 소스코드의 파일명이 같아야 한다. 즉 하나의 소스 코드에는 하나의 public class만이 존재할 수 있다.

profile
훈이야 화이팅

0개의 댓글