접근제한자

소정·2023년 1월 25일
0

Java

목록 보기
9/23

접근제한자

외부에서 데이터에 접근 가능한 범위를 정하는 것


접근 제한자접근 가능 범위
private본인 클래스 안에서만 접근 가능
(default)같은 패키지 안에서는 .연산자로 멤버 접근 가능
protected같은 패키지 안에서는 .연산자로 멤버 접근 가능, 단 상속 관계라면 접근가능함
public어디서든 . 연산자로 접근 가능

사용 예시

=> first.java는 같은 패키지 second.java는 다른 패키지에 있을 때 접근 가능 범위 알아보자

public class Main {
	public static void main(String[] args) {
		
		//같은 패키지의 클래스 객체 생성
		First f = new First();
		//f.a = 10; //에러 : private 멤버는 사용불가
		f.b = 10;
		f.c = 20;
		f.d = 30;
		
		f.aaa();
		
		//다른 패키지 클래스 
		Second sec = new Second();
		
		sec.d = 500; //public만 보임
		
		//멤버함수 - 함수도 멤버에 대한 접근제한 영향 받음
		sec.show();
		
	}
}


public class First {

	//서로다른 4가지 유형의 접근제한자 적용된 멤버변수 생성
	private int a;
	int b; //앞에 암것도 안써야 default
	protected int c;
	public int d;
	
	//멤버함수
	void aaa(){
		//같은 클래스안에 있는 멤버변수들은 접근제한자와 상관없이 사용 가능
		a=10;
		b=20;
		c=30;
		d=40;
		
		System.out.println(a);
		System.out.println(b);
		System.out.println(c);
		System.out.println(d);
	}
	
}


package aaa;

public class Second {
	//서로다른 4가지 유형의 접근제한자 적용된 멤버변수 생성
	private int a;
	int b;
	protected int c;
	public int d;
	
	public void show() { //다른 패키지일때 함수에 접근하려면 얘도 public으로 명시해야된다
		a = 100;
		b = 200;
		c = 300;
		d = 400;
		
		System.out.println(a);
		System.out.println(b);
		System.out.println(c);
		System.out.println(d);
	}
	
}


자바의 특성중 은닉화를 위해 접근제한자가 필요하다
캡슐화가 깨지지 않기 위해서는 정보의 은닉화가 필요하다
은닉화를 하지않으면 아무데서나 데이터에 접근가능하게 되기때문에 캡슐화의 의미가 없어진다

profile
보조기억장치

0개의 댓글