This applies to hardware and software, as ultimately, software written in very high-level languages is implemented through billions of state changes in logic gates constructed of semiconductor material.
Most systems hide their complexity behind an interface. An interface provides an abstraction of what lies behind it.
Interfaces are a fundamental principle of object-oriented programming (OOP). A class encapsulates (hides) all of its private attributes, and sometimes private methods, which are exposed only through its interface. The interface is provided in the form of public methods; the inner details and workings of classes are hidden from the user. For example, the interface of a class might specify that it has a method named sort, which you can use without giving any thought to the type of sorting algorithm that has been used. If you code in Python, you may have used a list's 'built-in' sort method. Unless you are very curious, you will not know that it uses a 'timsort' (which performs an insertion sort if a list has fewer than 64 items, or a modified version of a merge sort on larger data sets).