抽象型のパラメトリック型
抽象型のパラメトリック型は、次のように定義する。
julia> abstract type AbstractPoint{T} end
T は型パラメータだ。
さて、これを親とする Point2D{T} を定義する。
julia> struct Point2D{T} <: AbstractPoint{T}
x::T
y::T
end
親子関係の確認をしてみよう。
julia> Point2D{Int} <: AbstractPoint
true
julia> Point2D{Int} <: AbstractPoint{Int}
true
julia> Point2D{Int} <: AbstractPoint{Number}
false
AbstractPoint が Point2D{Int} の親であるのは、型パラメータをつけていないから。
AbstractPoint{Number} が親でないのは、Julia の型システムが不変(invariant)だから。
