백엔드/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
반응형