I think the difference in UML is that "extends" is based on extension points, which means that there must be a named point in the use case where the extension will be applied. Semantics are not very accurate. Inheritance for use cases means changing any behavior, not exzactly indicating where.
Another important point is about inheritance and the principle of Liskov's signature. You should be able to use one use case that inherits from another, anywhere you can use another. This is not done to understand the path. When one use case is expanded by another, it means that it can be changed by another, but still it contains the main path to the script, which can be forked and combined by an expanding use case. This, I think, is about the difference between structural and behavioral inheritance. Inheritance is the achievement of the same goal and the satisfaction of the same interests - the same responsibility and limitations of behavior when the extension is associated with a change in the structure of the script path, which may be caused by additional interests - for example, error checking.
Inheritance is really not a very good mechanism to be used for use, combined with the inheritance of an actor, which makes more sense, this can lead to undesirable paradoxes. Following the recommendations of Alistair Cockburn (Writing Effective Use Cases), inheritance should only be used to express variations of technical details or data formats for a specific use case.
source share