본문 바로가기
Language/java

java 기본 9: 접근 제한자(public/protected/friendly/default/private)

by S2채닝S2 2023. 1. 5.

접근제한자

- 클래스, 클래스 멤버에 대해 접근을 어디까지 허용하는지 제한

public class Person{
	String name;
    int age;
    
    Person(String name, int age){
    	this.name = name;
        this.age = age;
    }
}
Person person = new Person("홍길동", 25);

person.name = "노지연";
person.age = 15;

//"홍길동"(25)객체를 "노지연"(15)로 고의적.임의적으로 바꿀 수 있음

  >> 객체 정보를 아무렇게나 임의적으로 바꿀 수 있다면 보안상으로 많은 위험이 따름

  >> 따라서, 객체의 정보에 접근하는 것에 대한 제약이 필요

  >> 정보 은닉을 위한 방법으로 접근제한자를 사용함

 

 

접근제한자의 종류

  - 접근 제한자에는 public, protected, default, private가 있다

  public

  - 어디서든(클래스 내부, 같은 패키지, 다른 패키지) 접근 가능.

  - 클래스, 필드, 메소드 선언에서 사용 가능

protected

  - 같은 패키지 안에서만 호출 가능

  - 해당 클래스를 상속받은 자식 클래스이면 다른 패키지에 있어도 호출 가능

    (상속받지 않으면 다른 패키지의 다른 클래스 접근 불가)

  - 필드, 메소드, 생성자 선언에 사용(클래스 선언에서는 사용하지 않음)

 

같은 패키지인 경우

다른 패키지인 경우

 

default (friendly)

  - 선언시 작성하는 키워드가 아님

  - 접근 제한 설정을 하지 않은 기본 상태

  - 같은 패키지 안에서만 호출 가능

  - 상속받더라도 다른 패키지에서는 접근 불가

 

 

private

  - 접근 제한자 중에서 가장 엄격하게 제한. 

  - 패키지가 같은지 아닌지에 상관 없이 클래스 내부에서만 호출 가능

  - 필드, 메소드, 생성자 선언에 사용(클래스 선언에서는 사용하지 않음)

 

클래스 내부 호출

 

클래스 외부 호출

  : 같은 패키지 내 다른 클래스, 다른 패키지의 다른 클래스 모두 에러 발생

 

'Language > java' 카테고리의 다른 글

java 기본 11: 클래스 형변환  (0) 2023.01.05
java 기초 10: 추상 클래스(abstract class)  (0) 2023.01.05
java 기초 8: 상속  (0) 2023.01.05
java 기초 7: String 클래스  (0) 2023.01.04
java 기초 6: 참조 변수  (0) 2023.01.04

최근댓글

최근글

skin by © 2024 ttuttak