백엔드/Java&Spring 웹개발
[Java&Spring 웹개발] 3주차(05/17 - 05/23) 학습일지 (3)
미니개발자님
2023. 5. 20. 23:56
728x90
반응형
🌷 3주차 학습일지 (3)
1) 강의 범위: 3장 中 1 ~ 8강
2) 핵심 개념: 상속 / 형 변환(업캐스팅) / 메소드 오버라이딩 / 다형성 / 다운 캐스팅 / instanceof
1-2. 상속 (inheritance)
- 클래스 상속: 부모 클래스의 필드, 메소드를 자식 클래스로 물려주는 것
- 하나의 클래스만 상속받을 수 있음
- 기존의 클래스를 확장하여 중복 내용을 줄임
- 상위 클래스(일반적): parent class / base class / super class
- 하위 클래스(구체적): child class / derived class / subclass
class B extends A { }
- protected: 하위 클래스에서 상위 클래스로 접근 (외부 클래스 접근X)
3. 상속에서의 클래스 생성 과정 및 형 변환
1) 하위 클래스가 생성되는 과정
- 하위 클래스 생성 전 상위 클래스가 먼저 생성
- super(): 상위 클래스의 기본 생성자 호출 (하위 클래스에서 가지는 상위 클래스 참고 값)
- super를 통해 상위 클래스의 메서드나 멤버 변수에 접근
2) 형 변환 (업캐스팅)
- 상위 클래스로 변수 선언 & 하위 클래스의 생성자로 인스턴스 생성
- 실제로 접근 가능한 변수나 메서드는 상위 클래스만 가능
- 반대는 성립X
상위클래스 변수명 = new 하위클래스();
4. 메소드 오버라이딩 (overriding)
- 오버라이딩: 상위 클래스에 정의된 메소드의 구현 내용을 하위 클래스에서 동일한 이름으로 재정의
- @어노테이션(annotation) 사용: [마우스 오른쪽] > [source] > [Override/Implement Methods] 선택
어노테이션 | 내용 |
@Override | 재정의된 메소드라는 표시 |
@FunctionalInterface | 함수형 인터페이스라는 표시 |
@SuppressWarnings | 특정 경고가 표시되지 않도록 함 |
- 형 변환 시 인스턴스의 메소드가 호출 → 가상 메소드(virtual method)
5. 메소드 오버라이딩 원리 - 가상 메소드
- 가상 메소드 테이블(vitual method table)에서 해당 메소드에 대한 주소를 가짐
- 재정의된 메소드는 재정의된 메소드의 주소를 가리킴
- 스택 메모리: 메소드에서 사용하는 변수
6. 다형성 (polymorphism)
- 다형성: 하나의 코드가 여러 자료형으로 구현되어 실행되는 것
- 확장성(상속과 메소드 재정의) + 유지보수 편리
- 상위 클래스에서 공통적인 부분 제공 + 하위 클래스에서 각 클래스마다의 추가 기능 구현
7. 상속 사용 경우
1) IS-A 관계 (is a relationship: inheritance)
- 일반적인 개념과 구체적인 개념 간의 관계
- 계층 구조를 복잡하지 않게 설계
2) HAS-A 관계 (composition)
- 클래스가 다른 클래스를 포함하는 관계 (변수로 선언)
- 코드 재사용
8. 다운 캐스팅과 instanceof
- 다운 캐스팅: 업캐스팅된 클래스를 원래의 타입으로 형 변환 (명시적)
- instanceof: 인스턴스의 형 체크 → true/false 반환
Animal animal = new Human(); // 묵시적 Human human = (Human)animal; // 명시적 // instanceof 사용 if (animal instanceof Human) { Human human = (Human)animal; human.readBooks(); }
📌 3주차 (3) 공부 피드백 📌
✅ 다형성을 활용한 예제 문제를 많이 풀어봐야겠음
읽어주셔서 감사합니다.
언제나 피드백은 환영입니다.
728x90
반응형