[220527] 접근제한자(Acess Modifier)
목표 달성
1. private를 붙이고 getter/setter를 이용하여 class Score 를 작성할수 있다.
수업 정리
▷ 접근제한자
- public 접근 제한자 : 외부 클래스가 자유롭게 사용할 수 있음
- protected 접근 제한자 : 같은 패키지 또는 자식 클래스(상속)에서 사용할 수 있음
- default 접근 제한자 : 같은 패키지에 소속된 클래스에서만 사용할 수 있음
- private 접근 제한자 : 외부에서 사용할 수 없음
접근 제한 | 적용 대상 | 접근할 수 있는 클래스 |
public | 클래스, 필드, 생성자, 메소드 | 모든 클래스 |
protected | 필드, 생성자, 메소드 | 같은 패키지 내에 있는 클래스 상속받은 자식 클래스 |
default | 클래스, 필드, 생성자, 메소드 | 같은 패키지 내에 있는 클래스 |
private | 필드, 생성자, 메소드 | 같은 클래스 내에서만 |
- 클래스의 접근 제한
- default 접근 제한 : 같은 패키지에서는 아무런 제한 없이 사용가능 / 다른 패키지에서는 사용 불가능
- public 접근 제한 : 같은 패키지 뿐만 아니라 다른 패키지에서도 아무런 제한 없이 사용가능
- 생성자의 접근 제한
- 객체를 생성하기 위해서는 new 연산자로 생성자를 호출함.
- 생성자가 어떤 접근 제한을 갖느냐에 따라 호출 가능여부가 결정
- public 접근 제한 : 모든 패키지에서 제한 없이 생성자를 호출 가능
- protected 접근 제한 : 같은 패키지에 속하는 클래스에서 생성자 호출 가능 / 상속받은 자식 클래스에서 호출가능
- default 접근 제한 : 같은 패키지에서 속하는 클래스에서 생성자 호출 가능
- private 접근 제한 : 오직 클래스 내부에서만 생성자 호출 가능
- 필드와 메소드의 접근 제한
- public 접근 제한 : 모든 패키지에서 제한 없이 필드와 메소드를 사용 가능
- protected 접근 제한 : 같은 패키지에 속하는 클래스 & 상속받은 자식 클래스에서 필드와 메소드를 사용 가능
- default 접근 제한 : 같은 패키지에서 속하는 클래스에서 필드와 메소드를 사용 가능
- private 접근 제한 : 오직 클래스 내부에서만 필드와 메소드를 사용 가능
트러블 슈팅
■ 오늘의 복습문제 - 오답 정리
- 인스턴스 변수는 스택 영역에 저장한다.
- new연산자는 새로 만든 객체를 Heap 영역에 할당하고 메모리 주소를 반환하며 생성자를 실행한다.
- 실행된 생성자는 객체를 초기화한다.
■ 메소드는 ()
c1은 인스턴스 변수로 스택영역에 저장.
new연산자가 객체를 Heap영역에 할당 --> 메모리 주소 반환 --> 생성자 실행
생성자가 변수 초기화.
생성자를 이용해서 초기화한 c1 변수에서 color에 "white"의 값을 대입할 것이다.
Car() setColor("white")
■ main 클래스에 상속받는 클래스 함수는 똑같이 public static void로 설정!
오늘의 소감
오늘 내가 문제들한테 접근제한 당한 느낌...^^
자바 지식이 public이 아니고 private 제한자인가보다ㅎㅎ....
* 참고 자료 : https://hongong.hanbit.co.kr/%EC%9E%90%EB%B0%94-%EC%A0%91%EA%B7%BC-%EC%A0%9C%ED%95%9C%EC%9E%90%EC%9D%98-%EC%A2%85%EB%A5%98%EC%99%80-%EC%B0%A8%EC%9D%B4public-protected-private/