Type hierarchy of reinterpreted arrays

Is it correct to say that a reinterpreted array belongs to the same place in the type hierarchy of the original array?

Meaning:

julia> x = rand(3,3)
3×3 Matrix{Float64}:
 0.147486  0.663168  0.631236
 0.133914  0.63211   0.162756
 0.20874   0.726117  0.959137

julia> y = reinterpret(SVector{3,Float64},x);

julia> y isa AbstractMatrix
true

julia> y isa AbstractVector
false

julia> x = rand(9)
9-element Vector{Float64}:
 0.44525765951197704
 0.9449254480621896
 0.0295372702108041
 0.6995113601801652
 0.2283303239869987
 0.13192687662938263
 0.3828075496261596
 0.5295738484396664
 0.919470209658066

julia> y = reinterpret(SVector{3,Float64},x);

julia> y isa AbstractVector
true

Or, if I may ask something more specific: how is the recommended way to make a function that is typed to receive AbstractVector{<:AbstractVector} to work also on matrices? That is:

julia> f(x::AbstractVector{<:AbstractVector}) = "this is a vector of vectors"
f (generic function with 1 method)

julia> x = rand(3,3)
3×3 Matrix{Float64}:
 0.752403  0.068355  0.318391
 0.966343  0.7082    0.870195
 0.57566   0.995996  0.374196

julia> y = reinterpret(reshape, SVector{3,Float64}, x);

julia> f(y)
"this is a vector of vectors"

julia> y = vec(reinterpret(SVector{3,Float64}, x));

julia> f(y)
"this is a vector of vectors"

Both options above work. Is there any preferred, or recommended way?