Derived types must be completely substitutable for their base types. This means that if you have an instance of a base class used somewhere, you should be able to replace the base class instances with the child class instances of that base class. For example, if you have a base class called Animal and a child class called Dog, you should be able to replace your Animal class instances with Dog class instances without breaking any functionality.