꾸물꾸물 졔의 개발공부

01/20(3) - 접근제한자 본문

카테고리 없음

01/20(3) - 접근제한자

체제 2022. 1. 21. 17:06

접근제한자 : public , protected, package(default) , private

- public : 공개 , 어디에서나 접근이 가능하다 

- protected : 같은 패키지와 , 상속관계에 있는 것들에서만 접근이 가능 

- package (default) : 같은 패키지에서만 접근이 가능 

- private : 현재 객체에서만 접근이 가능 

 

+ static / final 

static : 메모리에 올라가있어라 !!! 클래스와 함께 사용되기 때문에, 객체가 생성되기 이전에도 접근이 가능

final : (= 마지막) 더 이상 값이 바뀔 수 없음, 

 1) final class : 더 이상 바뀔 수 없음, 즉 상속 불가능 ! --> 상속하면 오버라이딩 가능하므로 

 2) final method : 오버라이드 하지 마세요 , 재정의 금지 

 3) final variable: 상수화 

 

근데 왜 ? 데이터를 은닉하고 보호하기 위해서 !! 

if, public 하게 접근제한자를 지정하면 어느곳에서나 접근이 가능하기 때문에 , 보호는 힘듦 

보호가 필요한 정보이면 private 으로 숨기고, getter 나 setter 함수를 통해 접근이 가능하게 할 수 있다. 

setter 나 getter 는 public 하게 ~~ 

if ) setter 만 있다면, 쓰기전용, getter 만 있다면 읽기전용 

 

 

+ 오버라이딩의 조건 중 하나가, 메서드를 오버라이딩 할때는, 부모의 제한자보다 범위가 넓거나 같아야한다 .

ex) protected 부모클래스  ---@override---> private 자식클래스 (x) protected의 범위 > private 

 

public > protected > package > private