객체지향의 4가지 특징을 정리했다 ! - 개인적으로 기초 개념정리를 더했다,,,
객체의 정보를 외부에서 직접 접근하지 못하게 한다
접근제어자로 구현할 수 있다
| 접근제어자 | 클래스 내부 | 패키지 내부 | 상속한 클래스 | 전체 공개 |
|---|---|---|---|---|
| public | ✅ | ✅ | ✅ | ✅ |
| protected | ✅ | ✅ | ✅ | ❌ |
| default | ✅ | ✅ | ❌ | ❌ |
| private | ✅ | ❌ | ❌ | ❌ |
1. 생성자 호출
| 잘못 사용한 예시 | 올바르게 사용한 예시 |
|---|---|
![]() | ![]() |
![]() | ![]() |
| ❌ 오류 발생 | 문제없음 😁 |
private 같은 클래스 내부에서만 사용가능하기 때문 | public = 전체공개이기 때문에 |
2. 인스턴스 변수
| ✔️클래스 | ✔️메인 |
|---|---|
![]() | ![]() |
3. 인스턴스 메서드 접근
| ✔️클래스 | ✔️메인 |
|---|---|
![]() | ![]() |
💡 Tip
속성은private로 사용하고, 한단계씩 풀어가자
생성자는public으로 열어두면 매개변수를 활용해 객체를 생성하고 나면
속성은 변경이 안된다는 것 ~!~! 기억하자
getter : 데이터 찾을때String name = person.getName();
System.out.println("이름:"+name); // 출력에 person의 이름 나옴setter : 캡슐화 된 데이터를 바꿀때person.setName("steve"); // 원래 이름 "surin"
String name2 = person.getName();
System.out.println("이름:"+name2); // "steve"로 출력됨
💡 세터 활용의 예시 (핵시설의 관리자)
- ❌ 무분별한 세터 사용
- B를 입력하지 못하게
String store를private으로 보호 ➡︎store를 사용할 수 없음setter를 이용해 접근 가능하도록 함 ➡︎ 다시 "B"입력 가능해짐..🤔
- ⭕️ 올바른 사용
- 이 경우 "B"를 입력할 수 없도록,
if문을 함께 사용한다- 이외에도 세터를 남발대신
private으로 묶인 것들을 모아서 별도의 기능으로 만들어 제공하기 등등,, 다양한 방법이 있다
부모(상위) ,자식(하위) 관계로 바라본다extends 로 상속 관계 표현 가능
child 에는 아무것도 작성하지 않았으나, parent 의 모든 요소를 물려받고 있다
✔️super - 부모 인스턴스 호출
- 자식 클래스에서 명확하게 부모의 인스턴스를 호출하고 싶을 때
super로 구현
✔️자식클래스 ✔️메인클래스 부모클래스의 familyName = "스파르탄"임 부모 클래스 무시, 자식 클래스에서 다시 할당한 값이 나온다 super를 통해 부모의 인스턴스를 호출한다부모 인스턴스가 명확하게 호출됨
✔️super() - 부모 인스턴스의 생성자
- 부모의 생성자를 물려받았지만 추가적으로 자식 클래스에서 생성자를 입력하고 싶을 때 !
- 무조건
super()를 위에 두고 아래에 생성자를 만든다
(부모 생성자가 있어야 자식 생성자도 만들수 있음)

접근제어자는 부모보다 강한 수준으로 변경가능@Override 로 구현| ✔️부모클래스의 메서드 | ✔️자식클래스에서 재정의 |
|---|---|
![]() | ![]() |
계층 구조를 활용해서 하위 클래스에 특정 메서드 구현을 강제하기 위해 사용한다
1️⃣ abstract 로 클래스 선언

2️⃣ abstract 로 메서드 자식에게 강제 구현시키기
| 부모 클래스 | 자식 클래스 |
|---|---|
![]() | ![]() |
@Override를 쓰고 작성하기 |
주의 ‼️ 추상클래스는 인스턴스화 할 수 없다!!!
추상클래스 vs 인터페이스 ? 🤔
- 인터페이스 : 표준을 제공 / 인스턴스 변수 사용불가
- 상속 : 계층적 구조 표현 / 속성이나 기능 재사용시 용이





instanceof를 사용

지롱비 : 퍼가요 ~ ❤️