Small Grey Outline Pointer Java :: 접근 권한 제어자
본문 바로가기
Dev./java

Java :: 접근 권한 제어자

by sso. 2022. 5. 23.

 

data : int - Access(클래스명)

default : 파란색 세모

public : 초록색 세모

protected : 노란색 마름모

private : 빨간색 네모

 

 

 

 

 

 

 

Cloud 클래스의 메서드에서 Access 에 있는 필드에 접근하기

private은 내 클래스에서만 접근이 가능하다 따라서 Cloud클래스의 function메서드에서 찾을수 없다

 

Access 앞에 public이 붙어있는 것은 하나의 프로젝트 내에서 모두가 접근 가능 패키지가 달라도 접근 가능

하지만 Cloud 앞에 public을 붙이면 오류가 난다

메인 클래스에만 public을 붙일 수 있다

즉, Access라는 이름의 자바파일을 만들었기 때문에 그 안에서 퍼블릭 클래스는 Access 단 하나여야 한다

따라서 다른 클래스를 만들게 되면 디폴트가 붙는 것

하나의 파일 안에 여러개의 클래스를 만들 때에는 메인 클래스에만 퍼블릭이 붙을 수 있다!!!

 

 

 

 

 


 

 

package day13;

public class Access2 {
	void function() {
		Access a = new Access(); //객체화 하여 접근하기
		a.data3=30;
		System.out.println(a.data3);
	}
	
	public static void main(String[] args) {
		Access2 a = new Access2(); //객체화 하여 접근하기
		a.function();
	}
	
}

30

 

같은 패키지 내에서는 퍼블릭 디폴트 프로텍티드 세가지는 접근이 가능하다, 프라이빗은 불가

 

 


 

 

다른 패키지에서 Access를 객체화 하면 위에 import 가 생긴다

퍼블릭이라는 것은 다른 패키지에서도 접근이 가능

프로텍티드, 디폴트는 다른 패키지에서 접근 불가

 

 

클래스, 메서드, 변수 전부 접근권한제어자가 붙을 수 있다


 

 

private이 달려있는 변수에 접근하는 방법

package access;

import day13.Access;

public class Access3 {
	void function() {
		Access a = new Access();
		
	}
}

이 상태에서 function 앞에 public을 붙여주면 다른 패키지에서도 사용할 수 있게 된다

접근을 다 막아줄거라면 private을 써주면 된다 

메서드를 사용해주면 직접 접근은 아니지만 간접 접근은 할 수 있다

 

 

 

day13 패키지

package day13;

public class Access { //앞에 public이 붙어있는 것은 하나의 프로젝트 내에서 모두가 접근 가능 패키지가 달라도 접근 가능 
	int data1=10; //디폴트 접근 권한 제어자
	public int data2 =20;
	protected int data3= 30;
	private int data4= 40;
	
	public int getData4() { //모든곳에서 접근 가능하도록 public
		return data4; //get이므로 리턴타입 돌려준다 따라서 void 가 아닌 int형으로 작성
	}
	
	void f() {
	}
}

//Cloud 클래스의 메서드에서 Access 에 있는 필드에 접근하기
class Cloud{ 
	void function() {
		Access a = new Access(); //Access객체화 하여 접근하기 
		
	}
}

public int getData4() { //모든곳에서 접근 가능하도록 public
return data4; //get이므로 리턴타입 돌려준다 따라서 void 가 아닌 int형으로 작성
}

 

 

 

 

access 패키지

package access;

import day13.Access;

public class Access3 {
	void function() {
		private Access a = new Access();
		System.out.println(a.getData4());
	}
}

data4에 접근하여 값을 출력할 수 있다

 

 


getter setter 만들기

Alt + Shift + s > r

 

 

 

 

public int getData4() {
		return data4;
	}




	public void setData4(int data4) {
		this.data4 = data4;
	}

보통 private에 getter setter를 많이 쓴다

 

getter() : 데이터 가져오기 / setter() : 데이터 변경 
public 제어자를 붙여서 
다른 클래스 혹은 다른 패키지에서도 private 변수에 접근할 수 있도록 해준다

 

 

 

 

728x90

'Dev. > java' 카테고리의 다른 글

지역변수/전역변수/static변수  (0) 2022.06.06
Java 항공 관리 프로그램  (0) 2022.05.26
Java :: Class(생성자)  (0) 2022.05.23
Java :: Class(객체화)  (0) 2022.05.22
Java 메서드 2  (0) 2022.05.22

댓글