* 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 |