╱╱╭╮╱╱╱╱╱╱╭━━━╮╱╱╱╭╮╱╭╮╱╱╱╱╱╱ ╱╱┃┃╱╱╱╱╱╱┃╭━╮┃╱╱╱┃┃╱┃┃╱╱╱╱╱╱ ╱╱┃┣━━┳━━╮┃┃╱┃┣━╮╱┃╰━╯┣━━┳━╮╱ ╭╮┃┃╭╮┃┃━┫┃╰━╯┃╭╮╮┃╭━╮┃╭╮┃╭╮╮ ┃╰╯┃╭╮┃┃━┫┃╭━╮┃┃┃┃┃┃╱┃┃╭╮┃┃┃┃ ╰━━┻╯╰┻━━╯╰╯╱╰┻╯╰╯╰╯╱╰┻╯╰┻╯╰╯

CS/프로그래밍 언어론

[프로그래밍 언어론] Inheritance (8)

재안안 2024. 6. 20. 17:08

 

[7] Inheritance

Private Type
- Enforcing encapsulation
- Add protection

Class
- C++에서는 Class를 통해 ADT를 구현
- 데이터 공간 = 멤버 변수
- 추상 연산자 = 멤버 함수

Generic Data Type
- Parameteric polymorphism을 형성
- 타입을 인수로 받아 생성된 새로운 타입 (Instantiation of a class)
- 타입 인수는 컴파일 시간에 결정된다

Inheritance
- 외부 변수 이름을 블록 내부에서 볼 수 있는 것도 interitance의 일종
- 어떠한 ADT를 보다 구체화한 새로운 ADT를 만드는 것
- Superclass, subclass 관계를 형성
- Should represent "IS-A" relation
- Multiple inheritance를 통한 diamond-inheritance 이슈 발생
- Dynamic Invocation of Methods (overriding or virtual)

Polymorphism
- Ad-hoc Polymorphism (overloading)
- Parametric Polymorphism (generic modules)
- Subtype Polymorphism (IS-A, pure polymorphism)