사진은 베르사유 그랑 트리아농 외관 - 제일 멀어서 포기할까 생각했는데 궁전이 너무 예뻐서 오길 잘했다는 생각이 들었다
자바에서 제일 어려워하는 부분이던 상속/캡슐화를 배웠다. 항상 개념볼때까진 이해할만 하다가 여러 복잡한 코드의 경우들을 보면 다 꼬여서 힘들었는데, 오늘은 다시 쉽게 생각하고 반복을 거쳐서 그런가 할만 했던 것 같다. 실제 코드에서 쓸 수 있을지는 모르겠어서 연습이 필요할듯!
상속(Inheritance)
- 기존의 클래스를 재활용하여 새로운 클래스 작성
- 하위 클래스는 상위 클래스의 모든 멤버 상속받음
extends
키워드
- 다형적 표현 가능하게 함
- Java는 다중 상속❌
포함(Composite) 관계
- 클래스의 멤버로 다른 클래스의 참조 변수 선언
상속 : IS-A 관계
포함 : HAS-A 관계
메서드 오버라이딩(Method Overriding)
- 상위 클래스의 메서드와 동일한 이름의 메서드를 재정의해서 덮어씌우는 것
메서드 오버라이딩 조건
1. 메서드의 선언부(메서드 이름, 매개변수, 반환타입)이 상위클래스와 완전 일치
2. 접근 제어자의 범위가 상위 클래스의 메서드보다 같거나 넓어야 한다.
3. 예외는 상위 클래스의 메서드보다 많이 선언할 수 없다.
super 키워드
super() 메서드
- 상위 클래스의 생성자 호출
- this()와 마찬가지로 생성자 안에서만 호출 가능, 블럭 안 첫 줄에서 호출
❗모든 생성자 첫 줄에는 꼭 this()
or super()
선언해야됨
-> 상위 클래스에 기본 생성자 없으면 에러
Object 클래스
- Java의 모든 클래스는 Object 클래스로부터 확장됨
- e.g. toString(), equals(Object obj), hashCode(), etc
캡슐화(Encapsulation)
- 객체의 속성과 기능을 하나의 캡슐로 묶어서 데이터 보호
- 사용 이유
1.데이터 보호
2.데이터의 불필요한 노출 방지
패키지(package)
package practicepack.test;
import 문
으로 패키지 사용
- 클래스의 충돌 방지
접근 제어자

- public(접근 제한 없음) > protected(동일 패키지 + 하위클래스) > default(동일 패키지) > private(동일 클래스)
getter 와 setter 메서드
- setter 메서드로 데이터 값 변경 e.g.
setName()
- getter 메서드로 데이터 값 불러오기 e.g.
getName()
=> 데이터 보호, 은닉하면서 변경 가능