====== LU10c - Vererbung in UML und Python ====== | {{:modul:m320_2024:learningunits:lu10:transport.png?400|}}| class Transport: def __init__(self): self._power = 0.0 self.distance = 0.0 def accelerate(self): pass def slowdown(self): pass class Aeroplane(Transport): def __init__(self): # call constructor of the parent class super().__init__() self._climb_performance = 0.0 def take_off(self): pass def landing(self): pass | //Abb: Vererbung in UML-Darstellung// ===== Sichtbarkeit der Attribute ===== In früheren Learning Units haben Sie die Sichtbarkeit **+** ''public'' und **-** ''private'' kennen gelernt. Bei der Vererbung kommt nun noch die Sichtbarkeit ''protected'' hinzu. Attribute in der Oberklasse, welche auch in der Unterklasse direkt zugeifbar sein müssen, werden als **protected** (geschützt) deklariert. In UML wird dies mit dem Zeichen **#** signalisiert. ^ Sichtbarkeit ^ Symbol ^ Wer darf zugreifen? ^ | public | + | Jede andere Klasse/Funktion | | protected | # | Nur innerhalb der Klasse und deren Kinder | | private | - | Nur innerhalb der Klasse, keine Kinder | Im Gegensatz zu anderen Programmiersprachen erzwingt Python keine Sichtbarkeit von Attributen. Die Angaben ''protected'' und ''private'' sind mehr als Hinweise für andere Programmierer zu verstehen. ---- {{tag>M320-LU10}} [[https://creativecommons.org/licenses/by-nc-sa/4.0/|{{https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png}}]] René Probst, bearbeitet durch Marcel Suter