Skip to main content Link Search Menu Expand Document (external link)

Nedarvning i F#

Week 12

Contents
  1. Nedarvning i F#
    1. Hvornår bruger man inheritance?
    2. (parent class, child class) or (super class, sub class) or (base class, derived class)

Hvornår bruger man inheritance?

1
2
3
4
5
6
7
8
9
type car(f: float) =
    do printfn "Creating a car object"
    member this.wheels = 4
    member this.fuelEfficiency = f

type bike(_weight: float) =
    do printfn "Creating a bike object"
    member this.wheels = 2
    member this.weight = _weight

Som vi kan se, har vi to klasser, som hver især har de tilfælles, at de er køretøjer, og at de begge har hjul samt deres constructors er ens at de printer en tekst ud på skærmen, altså en sideeffekt. Yderligere, har de dog nogle properties som er forskellige til hinanden, altså hhv. fuelEfficiency samt weight.

Det her kan laves meget mere elegant ved brug af inhertiance, altså nedarvning, hvor at vores child classes, bike og car begge inheriter fra deres parent class vehicle, som ses herunder.

1
2
3
4
5
6
7
8
9
10
11
12
13
type vehicle (w : int) = 
  do printfn "Creating a vehicle object")
  member this.wheels = w
  
type car(f: float) =
    inherit vehicle(4)
    do printfn "Creating a car object"
    member this.fuelEfficiency = f

type bike(_weight: float) =
    inherit vehicle(2
    do printfn "Creating a bike object"
    member this.weight = _weight

Og nu har vi opnået et hierarkisk familieskab for begge to. Eksempler på at instantiere kunne nu se således her ud:

1
2
3
let aVehicle = vehicle 5
let car = car 55.7
let bike = bike 23.6

(parent class, child class) or (super class, sub class) or (base class, derived class)