Gibt es einen Unterschied zwischen einer Elternklasse und einer Superklasse? Ist eine Superklasse einfach eine Elternklasse, die nicht von anderen Klassen erbt?Unterschied zwischen einer Elternklasse und Superklasse
Antwort
Dies ist mehr ein Terminologieunterschied. Die Idee von Eltern- und Kindklassen oder Super- und Unterklassen. Es scheint abhängig von der Programmiersprache Erfahrung und Anwendungsdomäne, welche Sie verwenden.
super() ist, wie der Eltern- oder Superklassenkonstruktor für eine Java-Klasse in einer abgeleiteten Klasse aufgerufen wird.
Und es gab eine Reihe von Abwandlungen in der Terminologie seit Jahren, so dass ältere und erfahrene Programmierer, die früh in objektorientiert waren, die Dinge ein wenig anders nennen.
Das Eltern- und Kindfenster wird auch für Fenstersysteme verwendet, in denen ein Fenster in einem anderen Fenster enthalten ist, so dass die Terminologie ebenfalls wiederverwendet werden kann.
Ich würde sagen, es ist das gleiche.
Vielleicht möchten Sie zwischen einer direkten und indirekten Eltern- oder Superklasse unterscheiden, aber ich denke, die beiden Begriffe sind auch nicht klar genug. Wenn du das also ausdrücken willst, sei besser explizit.
Auch viele Programmiersprachen haben das Schlüsselwort "super", das sich auf die (direkte) Elternklasse bezieht. Aber selbst dort, wenn Sie eine "Super" -Methode aufrufen und die direkte Mutter sie nicht implementiert, sprudelt sie auch auf.
Sie sind im Wesentlichen gleich. Je nach Sprache ändert sich die Terminologie. Parent kann den unmittelbaren Elternteil bedeuten, während Super-Klasse eine der Vorfahrenklassen bedeuten kann. Darüber hinaus gibt es in Java die super() -Methode, die den Konstruktor des Parents aufruft.
Sie sind verschiedene Begriffe, um das gleiche OOP-Konzept zu behandeln: Vererbung. Wenn Klasse ChildClass
erstreckt ParentClass
kann man sagen:
ChildClass
Elternklasse ist ParentParentClass
ist die Super-Klasse von Child
Vererbungsebenen haben nichts zu tun gibt, ist es egal, wenn eine Super-Klasse selbst eine andere Klasse erweitert.
In Ruby Sprache haben wir beide die Begriffe, die verschiedene Dinge bedeuten.
ParentClass -> ChildClass
-> dies ist für Namensräume
verwendet und
SuperClass -> SubClass
-> dies für die Vererbung verwendet wird
Beispiele unten:
ParentClass -> ChildClass
:
class A
def self.f1
puts "A -> #{self.name}.f1 called"
end
# B is childclass of A
class B
def self.f2
puts "B -> #{self.name}.f2 called"
end
end
end
# C is subclass of A
class C < A
def self.f3
puts "C -> #{self.name}.f3 called"
B.f2
end
end
den Ausgang Siehe unten:
C.f1
A -> C.f1 genannt
C.f3
C -> C.f3 genannt
B -> A :: B.f2 genannt