Nedarvning i F#
Week 12
Contents
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