CS/Programming Language

Semantic Analyzer: Polymorphism

WakaraNai 2022. 11. 15. 20:58
728x90
반응형

"문자열 + 숫자"

파이썬은 에러지만 자바는 문자열로 이어준다.

이렇게 같은 문법에서 데이터 타입이 다를 때  어떻게 해야하는지를 명시하는 것이

polymorphism

 

4요소

- overloading : 하나의 함수가 데이터 타입따라 다른 기능을 가졌을 때 ex-operator

- parametric polymorphsim (=generics from ML) : type 자체를 변수로 만들 수 있음

      - stack이라고 했을 때, 책을 쌓거나 상자를 쌓거나 동전을 쌓거나 에 대해 하나의 타입만으로 이들을 관리할 수 있도록

          - public interface Stack<String> : Java에서는 Type Variable를 사용

- parameter coercion(numeric promotion): 강제 형 변환 ex- double x = 2 시 x는 2가 아닌 2.0

     - widening conversion in JAVA : 작은 데이터 타입은 큰 데이터 타입으로 byte, short, char는 int로 변환됨

     - 모호한 경우가 생길 수 있음: 입력값 'a'는 오버로딩 함수에서 int로 갈까 char로 갈까?  -> ambiguous 에러로 인해 실행 불가능

- subtype polymorphism (overriding): 상속을 통한 동일 이름의 메소드

 

 

728x90
반응형

'CS > Programming Language' 카테고리의 다른 글

Expression  (0) 2022.11.21
Stack Memory  (0) 2022.11.20
Semantics Analyzer : Type  (0) 2022.11.11
ML: Higher-order Functions  (0) 2022.11.11
ML: Semantics - "Types", Polymorphism, Scope  (0) 2022.11.10