Object oriented programming in Java: Inheritance, dynamic binding (virtual methods), overriding and overloading methods, iterators.