티스토리 뷰

일종의 규제 역할로써 어떤 메소드의 리턴하는 데이터의 타입을 규정하고 이를 명시함으로써 사용자가 적절히 메서드를 사용할 수 있게 된다. 접근 제어자는 클래스의 변수(Valiable)와 메서드(Method)들의 접근권한을 지정한다.

클래스 또한 접근 제어자로 접근권한을 지정하나 public과 default만 사용한다.

1. 클래스의 멤버(변수, 메서드) 접근제어자

※ 접근제어자 별 호출 가능 범위

  같은 클래스 같은 패키지 다른 클래스
& 서브클래스(ex. 상속)
다른 패키지 관계없음
public O O O O O
protected O O O X X
default O O X X X
private O X X X X

- 세부 설명

     public : 다른 클래스에서 호출 가능(메소드, 변수 ) 외부에서 호출 가능
     protected : 기본적으로 패키지 내에서만 호출 가능하나 다른 패키지의 클래스를 상속받는 경우 호출 가능
     default : 같은 패키지 내에서만 호출 가능
             * 특이사항 : 접근제어자를 명시하지 않으면 default로 인식(ex. void _testMethod() )
      private : 정의한 클래스 내에서만 호출 가능(메소드, 변수) → 외부에서 호출 불가

- 코드 예시1) (public & private) 

package public_private;

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


public class tutorial {

	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());
	}
}

- 코드 예시2) (public & private) 

package public_private;

class Calculator1{
	//외부에서 아래 변수의 수정을 하지 못하게 private 사용
	private int left, right;
	
	public void setOprands(int left, int right) {
		this.left =left;
		this.right = right;
	}
	// 외부 사용자가 확인할 필요없는 메소드는 private 사용
	private int _sum() {
		return this.left+this.right;
	}
	public void sumDecoPlus() {
		System.out.println("++++"+_sum()+"++++");
	}
	public void sumDecoMinus() {
		System.out.println("----"+_sum()+"----");
	}
}
public class calculatorDemo {
	public static void main(String[] args) {
		Calculator1 c1 = new Calculator1();
		c1.setOprands(10, 20);
		c1.sumDecoPlus();
		c1.sumDecoMinus();
	}
}

2. 클래스 접근제어자

    public class : 다른 패키지의 클래스에서 사용 가능
    (default) class : 같은 패키지에서만 사용 가능, 표현 생략

 

※ 본 내용은 생활코딩님 교육자료를 바탕으로 정리한 글입니다.

'Java' 카테고리의 다른 글

[Generices] 지네릭스  (0) 2023.10.24
[Java] 자바 언어의 특징  (0) 2023.07.24
[Java] BufferedReader / BufferedWriter 정리  (0) 2023.02.22
[Java] Interface & Abstract  (0) 2022.11.18
[Java] 배경지식  (0) 2022.11.15
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
글 보관함