Final types

Marking a type as final means that it can never have subtypes.

For example, given:

final class Foo

Then the following can’t compile:

class Bar extends Foo
// error: illegal inheritance from final class Foo
// class Bar extends Foo
//                   ^^^