Skillnad mellan versioner av "5.9 Arv"

Från Mathonline
Hoppa till: navigering, sök
m
Rad 38: Rad 38:
 
=== <span style="color:#931136">Super- eller basklassen Person</span> ===
 
=== <span style="color:#931136">Super- eller basklassen Person</span> ===
 
[[Image: Person_h.jpg]]
 
[[Image: Person_h.jpg]]
 
  
 
<big>
 
<big>
Rad 45: Rad 44:
 
Subklassen <b>Employee</b> ärver superklassen <b>Person</b>:s alla datamedlemmar och metoder.
 
Subklassen <b>Employee</b> ärver superklassen <b>Person</b>:s alla datamedlemmar och metoder.
  
Men hur ska konstruktorn ärvas? Den kan inte ärvas direkt p.g.a.:  
+
Men hur ska konstruktorn ärvas? Den kan inte ärvas direkt, eftersom:  
  
 
Konstruktorns namn = Klassnamn. Sub- och superklassen har olika namn.
 
Konstruktorns namn = Klassnamn. Sub- och superklassen har olika namn.
  
<b><span style="color:red">Lösningen:</span></b> &nbsp; Se konstruktorns kod i subklassen <b>Employee</b> nedan:
+
<b><span style="color:red">Lösningen:</span></b>
 +
 
 +
Subklassens konstruktor måste explicit ärva superklassens konstruktor.
 +
 
 +
Se konstruktorns kod i subklassen <b>Employee</b> nedan:
 
   
 
   
 
</big>
 
</big>
 
  
 
=== <span style="color:#931136">Subklassen Employee</span> ===
 
=== <span style="color:#931136">Subklassen Employee</span> ===

Versionen från 12 februari 2026 kl. 11.41

       Agenda          Genomgång          Övningar 27          Nästa lektion  >>      


5.9   Arv

Arvrelationens klassdiagram som modell

Arv.jpg


Superklassen kallas även för basklassen.


Modellens implementering

Klassen Date

Både superklassen Person och subklassen Employee (nedan) behöver klassen Date, för att

deklarera datamedlemmar av typ Date. Det är samma klass som användes vid komposition.

Därför måste klassen Date inkluderas i detta projekt.

På så sätt är projektet ett exempel på både komposition och arv.

Super- eller basklassen Person

Person h.jpg

Problem:

Subklassen Employee ärver superklassen Person:s alla datamedlemmar och metoder.

Men hur ska konstruktorn ärvas? Den kan inte ärvas direkt, eftersom:

Konstruktorns namn = Klassnamn. Sub- och superklassen har olika namn.

Lösningen:

Subklassens konstruktor måste explicit ärva superklassens konstruktor.

Se konstruktorns kod i subklassen Employee nedan:

Subklassen Employee

Employee h.jpg


Programmet Inheritance

Inheritance h.jpg










Copyright © 2026 Lieta AB. All Rights Reserved.