mjeongriver
article thumbnail
Published 2022. 10. 11. 18:36
day14-java TIL/Java

* super

- super는 한단계 위 부모클래스의 객체를 지정할 때 사용하는 키워드입니다.

- super. 을 사용하면 부모클래스의 멤버를 참조할 수 있습니다.

- super()는 생성자 내부에서만 사용이 가능하며, 부모클래스의 생성자를 호출하는 데 사용합니다.

- 생성자의 첫 라인에는 반드시 this(), super()가 있어야 하는데 이를 기술하지 않으면 묵시적으로 super()가 삽입되어 부모클래스의 기본 생성자를 자동으로 호출합니다.

- 생성자 내부에서 또다른 생성자를 호출할 때는(this(), super()) 반드시 생성자 블록 내부의 첫 라인 에 기술해야 합니다.

 

* java-상속 계층 구조

- 자바의 모든 클래스는 Object 클래스를 상속받고 있습니다. Object클래스는 자바의 최상위 클래스입니다.

- 자바 최상위 부모클래스 Object이고 자식이 person일 경우 아무것도 명시하지 않으면 person은 자동 Object의 자식 클래스가 됩니다.

- 계층 구조는 super()를 통한 호출로 연결되어 있습니다.

 

* super 예제

- super 키워드는 자식 클래스의 오버라이딩 된 메서드에서 부모의 메서드가 필요할 때 사용 할 수도 있습니다

ex. 위 사진 student에서 super.info처럼

 

* 접근 제한자(Access Modifier)

- 접근 제한자는 클래스와 멤버변수, 메서드, 생성자의 접근을 제어할 수 있는 제한자입니다.

- 라이브러리 클래스를 설계할 때는 외부 클래스에서 접근할 수 있는 멤버와 접근할 수 없는 멤버로 구분 해서 변수, 생성자, 메서드를 설계하는 것이 바람직합니다.

- 외부에서 객체 생성을 막기 위해 생성자를 호출하지 못하게 하거나 객체의 특정 데이터를 보호하기 위 해 해당 멤버변수에 접근하지 못하도록 막는 것이 접근 제한자의 역할입니다.

- 클래스에는 접근 제한자를 public과 default만 붙일 수 있습니다.

 

* 접근 제한자의 종류

- public: 같은 클래스, 같은 패키지, 다른 패키지를 막론하고 접근이 가능.

- protected: 같은 클래스, 같은 패키지는 접근이 가능하지만 다른 패키지에 속해있는 클래스인 경우 상속관계 가 없으면 접근이 불가능.

- default(접근 제한자를 붙이지 않는 형태): 같은 클래스, 같은 패키지에서만 접근이 가능하며 패키지가 다를 경우 접근이 불가능.

- private: 같은 클래스 내부가 아니면 접근이 불가능.

 

* 접근 범위(접근 제한, 적용할 내용, 접근할 수 없는 클래스)

- public, 클래스-필드-생성자-메소드, 없음

- protected, 필드-생성자-메소드, 자식 클래스가 아닌 다른 패키지에 소속된 클래스

- default, 클래스-필드-생성자-메소드, 다른 패키지에 소속된 클래스

- private, 필드-생성자-메소드, 모든 외부 클래스

 

* 은닉(Encapsulation)캡슐화

- 은닉은 사용자에게 상세한 내부 구현을 숨기고 필요한 부분만 보이게 하는 것입니다.

- 은닉을 사용하기 위해서는 클래스의 멤버변수의 접근제한자를 private으로 설정합니다.

- 은닉된 멤버변수에 접근하기 위해서는 공개된(public) 메서드를 통해서 접근할 수 있는데, 변수 의 값을 변경시키는데 사용되는 메서드는 setter메서드(저장)라고 부르며, 변수의 값을 얻어오는데 사용 하는 메서드를 getter메서드(얻는다)라고 부릅니다.

- 이처럼 공개 메서드를 이용하여 데이터를 변경시킬 경우 메서드 내에 데이터 유효성을 검증할 수 있는 루틴을 넣을 수 있습니다.

- 뿐만 아니라 경우에 따라 접근 권한을 체크할 수 있는 로직을 포함시키면 인가되지 않은 사용자 에게 중요한 데이터나 로직을 숨길 수도 있습니다.

- 멤버변수만 private 제한자를 가지는 것은 아닙니다. 외부에 공개하고 싶지 않은 메서드들도 private으로 선언할 수 있습니다.

- 변수의 접근제한을 열어두면 모든 값이 저장 될 수 있으나 잘못된 값이 저장될 수도 있다는 뜻입니다.

 

<오늘 푼 문제들>

 

 

집에 가서 오늘 배운 진도를 자바의 정석 보면서 복습하고

주말동안 백준, 프로그래머스 양 잡아 놓고 풀 수 있도록 노력할 것.

- 백준 반복문(5,12 제외) 다 풀기
- 함수, 기본 수학(통계), 정렬(빠른 정렬 하라고 하면 선택 정렬 쓰면 안됨)
- 프로그래머스(0~2 레벨은 풀어야 됨)

'TIL > Java' 카테고리의 다른 글

day16-java  (0) 2022.10.13
day15-java  (0) 2022.10.12
day13-java  (0) 2022.10.07
day12-java  (0) 2022.10.06
day11-java  (2) 2022.10.05
profile

mjeongriver

@mjeongriver

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!

검색 태그