In your example, the only difference is that with the superclass constraintfoo :: House h => h -> Integerfoo h = addressB h + addressH hworks, while without superclass constraint, foo would need both classes in its context.