Java 실습

[220527] 접근제한자(Acess Modifier)

ss__0 2022. 5. 29. 13:42

 목표 달성

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/

'Java 실습' 카테고리의 다른 글

[220531] 상속(inheritance), super, super()  (0) 2022.05.31
[220530]  (0) 2022.05.31
[220525]Class,jvm 메모리 영역, 깊은복사  (0) 2022.05.26
[220524]Class_수정하기  (0) 2022.05.24
[220523] Method, JavaApi  (0) 2022.05.24