Not quite. The type of a variable in your code is indeed Console but the type of b is ViewportConsole. It's a subtle difference: in the seq exemple it's a variable of a type Console which stores a value of ViewportConsole. The difference is: # in seq example: consoles[0] of Console # true consoles[1] of ViewportConsole # true, it is ViewportConsole type value consoles[0] is Console # true consoles[1] is ViewportConsole # false, it is Console type variable # in var example: a of Console # true a of ViewportConsole # true a is Console # true a is ViewportConsole # true
It's similar to many other languages, some of which reflect the difference using very explicit syntax: * Ada -- Console vs Console'class * Fortran -- type(Console) vs class(Console)