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
                                                               
BASICS

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

Get Professional F# 2.0 now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.