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
=> 상속관계의 오버라이딩된 메소드에서 부모타입으로 자식객체를 생성했을 때 발생하는 원리
컴파일 시점 --- 부모의 메소드 호출
런타임 시점 --- 실질적으로 생성된 자식의 메소드를 호출