For your first post, you're passing a type not an instance.
In any case, as said above try to avoid abstract type as field and prefers
something like
Abstract A
Type B{T<:A}
X::T
EndFor your final post look at the bit about covariance http://julia.readthedocs.org/en/latest/manual/types/
