Object-oriented programming
F# provides object-oriented programming (OOP) with relative ease. It is a first class functional language, as we have seen up until now and a first class OOP language as well. To be able to mix both the paradigms is a very powerful tool. We can easily extend .NET types that were implemented in other languages easily with F#. The main features of OOP are as follows:
- Encapsulation: Objects can hide information (code and data) about themselves to prevent unexpected modifications from other objects
- Inheritance: The definition of one type of object (a class) can be reused by a new definition that inherits the methods from the former class (its parent) and can extend them
- Polymorphism: Methods expecting arguments of a certain class can also accept descendants of that class
Defining a class
The simplest form of a class definition looks like a definition of an object with the following keyword:
type <class name><constructor arguments> = [class] ...