 The Draw function for each type of Shape implements what is necessary to draw itself while calling code can remain indifferent to the particular type of Shape being drawn.This is another type of abstraction which simplifies code external to the class hierarchy and enables strong separation of concerns.In languages that support open recursion, object methods can call other methods on the same object (including themselves), typically using a special variable or keyword called codice_6 or codice_7.