To extend or modify the behaviour of ‘an instance’ at runtime decorator design pattern is used.
Inheritance is used to extend the abilities of ‘a class’.
Unlike inheritance, you can choose any single object of a class and modify its behaviour leaving the other instances unmodified.
i mean if you use inheritance and extend super class to sub class, then say, you created 100 objects of that class, your class functionality will be in all the 100 objects.
but you want that functionality in 2 or 3 objects that time you can decorate that object run time, that is where decorator pattern is used.