-
Notifications
You must be signed in to change notification settings - Fork 0
week 4.3 4.4 polymorphysm
Alina GHERMAN edited this page Aug 16, 2016
·
1 revision
def assertAllPos[S<:IntSet](r:S):S
S is a subtype of IntSet
- In java Arrays are co-variant ==> we allow to have subtypes of the defined types
- In scala List are covatiant
- In scala Arrays are not ==> new Array[NonEmpty]
- class is covariant C[+A]
- methods are covariant for results, and are not covariant for parameters
- You can think of the object keyword as creating a singleton object of a class that is defined implicitly.
- Abstract classes can have constructor parameters as well as type parameters. Traits can have only type parameters. There was some discussion that in future even traits can have constructor parameters
- Abstract classes are fully interoperable with Java. You can call them from Java code without any wrappers. Traits are fully interoperable only if they do not contain any implementation code