meshjo_12 2023. 10. 6. 15:40

2023. 07. 24 수업 이슈

  • Inheritance
  • Polymorphism
    • Object Casting
    • Virtual Method Invocation
  • 상속시 메모리 할당
  • Interface

 

EE스펙에서 본 소스구조

 

클래스간의 상속

  • 다이어그램에서 실선으로 표현한다.

 

상속관계시 중요한 지점

 

1. 자식 객체 생성 시 무조건 부모 객체를 먼저 생성한다.

2. 부모에게서 물려받는 필드에 값 주입은 super() 혹은 super.setXxx() 사용

3. 부모에게서 물려받은 메소드는 자식클래스에서 구현부를 자식에게 맡게 고쳐쓴다.

 

클래스 상속관계의 메모리 할당

 

VO클래스와 DB 테이블 관계

  • VO의 필드명은 DB 테이블의 컬럼명과 일치시킨다.
  • 생성자 오버로딩 기술을 사용하여 default value를 채울 수 있다.

 

Access Modifier

  • protected => 같은 디렉토리(상속관계가 아니면 접근을 함부로 접근하지 않게 한다. 보안 목적) + 상속관계(상속관계에서는 접근을 어느 정도 풀어준다)

 

Interface

  • 인터페이스는 사용자와 벤더사 사이의 강력한 규약
  • 인터페이스는 추상 메소드(Abstract method)의 집합
  • public abstract 생략 가능
  • 구현부가 없다. 선언부(템플릿)의 집합
  • 인터페이스에서 선언된 메서드는 자식들이 반드시 사용해야 한다.
  • 다이어그램에서 점선으로 표시한다.
  • 추상메소드가 있는 걸로는 객체를 생성할 수 없다. 하나라도..! 메모리에 못 올라간다.
  • 인터페이스는 객체 생성 시 타입으로서는 존재한다. 왜냐하면, Parent이기 때문이다....다형성

강력한 Contract로서의 인터페이스

 


ETC...

  • Inheritance 상속

1. 부모가 가진 모든 것을 물려받는다.

2. 자식은 자신만의 멤버를 추가한다.

 

부모 => 재사용성을 높이는 기능

자식 => 파워풀한 기능을 구사할 수 있게 한다.

 

[조건]

Abstaction 과 Is a Relation 관계가 만족하면 상속관계 만족한다.

 

상속관계에서 자식을 생성하면 메모리에 부모와 함께 한 덩어리로 올라간다.

 

  • 생성자 오버로딩

필수값만으로 기본값들을 채워넣을 수 있는 기술

 

  • Polymorphism

부모 타입으로서 자식 객체를 생성하는 기법

1) Object Casting

2) Virtual Method Invocation 

=> 상속관계의 오버라이딩된 메소드에서 부모타입으로 자식객체를 생성했을 때 발생하는 원리

컴파일 시점 --- 부모의 메소드 호출

런타임 시점 --- 실질적으로 생성된 자식의 메소드를 호출