>I consider Ada packages as static (non-instantiable) classes, where children
>inherits their static nature.
>  Does that make sense ?
Too narrow sense. Although you do not instantiate non-generic packages (if you
do not treat "with" clause as a kind of instantiation), you may instantiate
new types from them, deriving from private types declared in those packages.
  Look at the difference between "new" in C++ and "new" in Ada. "new" in C++
is run-time action, which produces new copy of object of the class, while
"new" in Ada is compile-time action, which produces new type, and that new
type is neither subtype nor supertype of original type... but it is defined
by the same package as the original type.