마트철수
[031] JAVA 상속 오버라이딩 본문
2024.06.20(목)
JAVA 4일차
클래스는 필드, 생성자, 메서드 → #필생메
상속은 메소드 오버라이딩, 다형성, 추상
Home: 개발환경 - import 설정 구축해두기
ch06 클래스
패키지
: 개발 회사의 도메인 이름의 역순으로 만듦
: 이름 충돌 때문에 import문 사용 불가 → 전체 클래스 경로명을 사용
ex) import com.hankook.*;
접근 제한자
: 객체의 무결성을 유지하기 위해서
: public > protected > (default) > private
#default는 안붙였을때, 같은 패키지 내에서 public과 같은 역할을 함
Getter와 Setter
: 객체의 필드(데이터) 은닉
#외부에서 직접 접근하는 경우 잘못된 데이터 입력 가능(무결성 깨짐)
- 필드에 대한 접근은 Getter, Setter 메서드로 접근
- boolean 타입에 대한 Getter 메서드는 isXxxx()가 관례
싱글톤 패턴
: 생성자를 private 접근 제한해서 외부에서 new 연산자로 생성자 호출을 막음

ch07 상속
상속
: 클래스 재사용하므로 중복 코드 줄임
: 클래스 수정 최소화
클래스 상속
: extends 부모클래스
#하나의 부모 클래스만 상속(다중 상속 불가, 언어에 따라 다름)
메소드 재정의
메소드 오버라이딩은 자식 클래스에서 재정의하는 것
- 리턴 타입, 메소드 이름, 매개변수와 동일해야함
- 부모에서는 따로 존재하는 것
- 접근 제한을 더 강하게 불가(public → private 불가 / private → public 가능)
#오버로딩은 아예 다른 것이기에 구분 잘 해야함 (하나라도 다르면 아예 새로운 메소드가 생성되는것)
@Override ... @는 annotation(주석) → 코드 자체에는 영향을 주지 않음
// ... comment(주석)과 다름
Ctrl + O
타입 변환 (★매우중요★)
자동 타입 변환
: primitive, 작은 번위에서 큰 범위로 (분실이 없음)
다형성 (매우 어려움)
: 실행 결과가 다양하게 나오는 성질
: 자동 타입 변환 + 메소드 재정의(오버라이딩)
#Upcasting을 기본으로 사용

- Car은 Tire에 의존한다
- 부모 클래스 아래 여러 자식 클래스가 있음 → 사용하는 곳에서 부모 타입으로 이용(use)한다
→ 해당 구조를 보면, '다형성을 이용하고 있구나' 라고 해석 가능
#Class Diagram 해석이 중요함
#결합도는 낮추고(단일책임원칙), 응집도는 높여라
주입(Injection) ... DI
객체 타입 확인
instanceof 연산자
: 매개변수가 아니더라도 변수가 참조하는 객체의 타입을 확인할 때
ex) boolean result = 객체 instanceof 타입; ... 좌항의 객체가 우항의 타입이면 true 산출
추상 클래스
1) 클래스를 강제화시킬때
2) 전략 패턴의 부모 타입으로 사용하기 위해서
#SPR(Single Responsibility Principle, 단일책임원칙), OCP(Open/Closed Principle, 개방/폐쇄 원칙)
실습

> 상수는 무조건 대문자로 작성한다.

> static 함수가 가장 먼저 해석됨
> 5번에서 static 삭제할 경우 오류 발생
'KB IT's Your Life > 교육' 카테고리의 다른 글
| [034] 예외 처리, Object Class (1) | 2024.06.26 |
|---|---|
| [032] JAVA 인터페이스 (상속과 비슷한) (1) | 2024.06.21 |
| [030] 클래스는 필드, 생성자, 메소드 (0) | 2024.06.19 |
| [029] JAVA 변수, 연산자, 반복문 (0) | 2024.06.18 |
| [028] JAVA 개발환경 구축 + 변수, 타입 (1) | 2024.06.17 |