sentence: compared to fully object-oriented programming languages like smalltalk , in oberon-2 basic types are not objects , classes are not objects , many operations are not methods , there is no message passing ( to a certain extent it can be emulated by reflection and through message extension , as demonstrated in eth oberon ) , and polymorphism is limited to subclasses of a common class ( no duck typing like in python , and it 's not possible to define interfaces like in java ) .