Polymorphism, upcasting, downcasting, generic list