ポリモーフィズム
ポリモーフィズムは色々ある
code:subtype.swift
func useAnimal(_ animal: Animal)
Animal型を受け付けるようなやり方
実行時までanimalが何の型なのかは決まらない
code:parametric.swift
func useAnimal<T: Animal>(_ animal: T)
ジェネリクスの制約としてAnimalを用いる
実行時に何を渡せばよいか決まる(静的ディスパッチされる)。
最適化の過程でジェネリックな関数やメソッドの型パラメータを具体的な型に展開する場合があり、これを特化と呼ぶ。 インライン展開することもできる