overriding methods in subtypes allows very powerful object-oriented systems to be developed for exampleif we wanted to implement player class with artificial intelligencewe might provide calculate_move method that takes board object and decides which piece to move where very basic class might randomly choose piece and direction and move it accordingly we could then override this method in subclass with the deep blue implementation the first class would be suitable for play against raw beginnerthe latter would challenge grand master the important thing is that other methods in the classsuch as the ones that inform the board as to which move was chose need not be changedthis implementation can be shared between the two classes in the case of chess piecesit doesn' really make sense to provide default implementation of the move method all we need to do is specify that the move method is required in any subclasses this can be done by making piece an abstract class with the move method declared abstract abstract methods basically say"we demand this method exist in any non-abstract subclassbut we are declining to specify an implementation in this class indeedit is possible to make class that does not implement any methods at all such class would simply tell us what the class should dobut provides absolutely no advice on how to do it in object-oriented parlancesuch classes are called interfaces inheritance provides abstraction let' explore the longest word in object-oriented argot polymorphism is the ability to treat class differently depending on which subclass is implemented we've already seen it in action with the pieces system we've described if we took the design bit furtherwe' probably see that the board object can accept move from the player and call the move function on the piece the board need not ever know what type of piece it is dealing with all it has to do is call the move methodand the proper subclass will take care of moving it as knight or pawn polymorphism is pretty coolbut it is word that is rarely used in python programming python goes an extra step past allowing subclass of an object to be treated like parent class board implemented in python could take any object that has move methodwhether it is bishop piecea caror duck when move is calledthe bishop will move diagonally on the boardthe car will drive someplaceand the duck will swim or flydepending on its mood