Chapter 9. Inheritance
WHAT'S IN THIS CHAPTER?
Understanding inheritance in F#
Understanding field and constructor invocation
Using casts
Defining and using interfaces
Applying object expressions
Within the object-oriented parlance, inheritance is frequently used to mean implementation inheritance, where a given type can express a relationship to another type, effectively importing all the data and behavior of that parent type. Originally thought (in Smalltalk and C++) to be a staple of the object-oriented design process, then later criticized and revamped to split into implementation and interface inheritance in languages such as Java and C#, inheritance nonetheless represents a powerful and useful technique for not only expressing relationships between types, but also in ensuring that behavior relating to a group of types remains defined in precisely one place. As a full-fledged member of the object-oriented family of languages, F# offers full support for inheritance between types, with the additional "twists" that come with a new language.
BASICS
Assume that there is a base type defined in F# (or, if wanted, in another .NET language), something along the lines of:
[<Class>]
type Person(fn, ln, a) =
member p.FirstName = fn
member p.LastName = ln
member p.Age = a

We can define a new type that inherits from this base type by referencing it in the opening lines of the derived type definition: ...