자바수업 기록

자바14강 super 키워드 / 은닉: 접근제한자, getter,setter메서드

JadeStone 2022. 10. 11. 18:11

Jadestone 의 깃허브 (당일 수업에서 작업한 파일들이 업로드 되어있습니다) 링크:

https://github.com/BigJadeStone/java-class

 

GitHub - BigJadeStone/java-class: 자바수업 내용물 저장

자바수업 내용물 저장. Contribute to BigJadeStone/java-class development by creating an account on GitHub.

github.com

<오늘 수업>

자바교안 12강 

super 키워드
참고 클래스: Quiz09
- super는 한단계 위 부모클래스의 객체를 지정할 때 사용하는 키워드입니다.
- super. 을 사용하면 부모클래스의 멤버변수와 메서드를 참조할 수 있습니다.

- super()는 생성자 내부에서만 사용이 가능하며, 부모클래스의 생성자를 호출하는
  데 사용합니다.
- 생성자의 첫 라인에는 반드시 this(), super()가 있어야 하는데 이를 기술하지 않으면 묵시적으로
  super()가 삽입되어 부모클래스의 기본 생성자를 자동으로 호출합니다.
- 생성자 내부에서 또다른 생성자를 호출할 때는(this(), super()) 반드시 생성자 블록 내부의 첫 라인
  에 기술해야 합니다
-자바의 모든 클래스는 Object 클래스를 상속받고 있습니다. Object클래스는 자바의 최상위 클래스입니다.
-생성자 안에는 항상 this() 혹은 super()이 생성되어있다.(생략되어서 안보일 뿐)

 

 

자바교안 13강_은닉

접근 제한자(Access Modifier)
참고 파일: day07.modi.cls.pac1,2 , day07.modi.construct.pac1,2, day07.modi.member.pac1,2
 day07.modi.protec.pac1,2
- 객체지향(oop) 언어에만 있는 특징.
- 접근 제한자는 클래스와 멤버변수, 메서드, 생성자의 접근을 제어할 수 있는 제한자입니다.
- 라이브러리 클래스를 설계할 때는 외부 클래스에서 접근할 수 있는 멤버와 접근할 수 없는 멤버로 구분
  해서 변수, 생성자, 메서드를 설계하는 것이 바람직합니다.
- 외부에서 객체 생성을 막기 위해 생성자를 호출하지 못하게 하거나 객체의 특정 데이터를 보호하기 위
  해 해당 멤버변수에 접근하지 못하도록 막는 것이 접근 제한자의 역할입니다.
★ 클래스에는 접근 제한자를 public과 default만 붙일 수 있습니다. 

#접근 제한자의 종류
!!! 접근 제한자의 종류4가지는 꼭 암기해야함. 
그러나 어려우면 1번하고 4번은 꼭 알아두기(1,4번이 주로 사용되기 때문)
1. public: 같은 클래스, 같은 패키지, 다른 패키지를 막론하고 접근이 가능.
2. protected: 같은 클래스, 같은 패키지는 접근이 가능하지만 다른 패키지에 속해있는 클래스인 경우 상속관계
   가 없으면 접근이 불가능. ( 아래 default 와 같지만 다른 한가지 점은 다른 패키지여도 상속관계를 지정해주면 그 때는 접근이 가능하게 허용해줌.)
3. default(접근 제한자를 붙이지 않는 형태): 같은 클래스, 같은 패키지에서만 접근이 가능하며 패키지가 다를
   경우 접근이 불가능. (default 의 경우 앞에 아무것도 안 쓴경우 디폴트라고 보면됨.)
4. private: 같은 클래스 내부가 아니면 접근이 불가능. (은행으로 비유했을 때, 은행직원만 창구에 접근할 수 있게끔하는것.)

 


은닉
참고 파일: day07.encap.bad , day07.encap.good , Quiz10
정보은닉-캡슐화
은닉(Encapsulation)캡슐화
- 은닉은 사용자에게 상세한 내부 구현을 숨기고 필요한 부분만 보이게 하는 것입니다.
- 은닉을 사용하기 위해서는 클래스의 멤버변수의 접근제한자를 private으로 설정합니다.
- 은닉된 멤버변수에 접근하기 위해서는 공개된(public) 메서드를 통해서 접근할 수 있는데, 변수
  의 값을 변경시키는데 사용되는 메서드는 setter메서드라고 부르며, 변수의 값을 얻어오는데 사용
  하는 메서드를 getter메서드라고 부릅니다.
  set= 값을 저장, get = 얻다 (값을 조회)
  
  위에 세개의 내용은 국룰임. 
  
- 이처럼 공개 메서드를 이용하여 데이터를 변경시킬 경우 메서드 내에 데이터 유효성을 검증할
  수 있는 루틴을 넣을 수 있습니다.
- 뿐만 아니라 경우에 따라 접근 권한을 체크할 수 있는 로직을 포함시키면 인가되지 않은 사용자
  에게 중요한 데이터나 로직을 숨길 수도 있습니다.
- 멤버변수만 private 제한자를 가지는 것은 아닙니다. 외부에 공개하고 싶지 않은 메서드들도
  private으로 선언할 수 있습니다.
★ 겟터, 셋터를 일일이 만들어주기 힘드니까 자동으로 완성해주는 기능이 있음. 아래는 실행방법.
자동완성 alt + shift + s 또는 source탭 -> generate getters and setters 

 

겟터,셋터 메소드 자동완성 기능 실행 창



<오늘 기억할 내용>
-선언시에 카멜표기법 반드시 지키기. 나중에 이 대문자 소문자 차이 때문에 프로그램이 안 돌아감.
- 기본 생성자 빨리만들기 (자동완성 기능)
  기본생성자 자동완성 키: ctrl + space + enter
-생성자 빨리 만들기 (자동완성 기능)
생성자 alt + shift + s -> generate constructor using field
-객체반복 내용. 꼭 알아두어야 함.

-은닉에서 setter, getter 메서드를 사용하는 이유.

 객체의 무결성을 보장하기 위함 : 예를 들어, 만약 외부에서 몸무게라는 필드에 직접 접근한다면 0보다 낮은 값을 줄 수도   있습니다. 이 경우 객체의 무결성이 깨지기 때문에 이를 방지하기 위해 Getter/Setter를 사용하여 데이터의 무결성을 지켜   줍니다.

무결성이란 ?

데이터의 정확성과 일관성을 유지하고 보증하는 것을 말합니다.

#출처: https://thalals.tistory.com/279 [힘차게, 열심히 공대생:티스토리]  - 셋터,겟터 메서드를 사용하는 이유와 단점, 그리고보완할 방법.

 

생성자 빨리만들기 화면.