Разница между родительским классом и суперклассом
есть ли разница между родительским классом и суперклассом? Является ли суперкласс просто родительским классом, который не наследуется от других классов?
5 ответов
Это скорее терминологическая разница. Идея родительских и дочерних классов или суперклассов и подклассов. Кажется, это зависит от опыта языка программирования и домена приложения относительно того, какой из них вы используете.
super () - это способ вызова родительского или супер-конструктора класса для класса Java в производном классе.
и было довольно много оттока в терминологии в течение многих лет назад, так что более старые и более опытные программисты, которые были в объектно-ориентированных в начале мая все немного по-другому.
Родительское и дочернее окно также используется для оконных систем, в которых окно содержится в другом окне, так что терминология также может быть использована повторно.
это разные термины для решения одной и той же концепции ООП: наследование. Если класс ChildClass
выходит ParentClass
вы можете сказать:
-
ChildClass
родительский класс-ParentClass -
ParentClass
является супер-классом ChildClass
уровни наследования не имеют там ничего общего, не имеет значения, если супер-класс сам расширяет другой класс.
Я бы сказал то же самое.
возможно, вы захотите провести различие между прямым и косвенным родителем или суперклассом, но я думаю, что эти два термина также недостаточно ясны. Так что если это то, что вы пытаетесь выразить, лучше быть явным.
кроме того, многие языки программирования имеют ключевое слово "super", используемое для ссылки на (одиночный) прямой родительский класс. Но даже там, если вы вызываете "супер" метод, и прямой родитель не реализует его, он также пузырится вверх.
Они по сути одинаковы. В зависимости от языка меняется терминология. Родитель может означать непосредственного родителя, в то время как супер класс может означать любой из классов предков. Кроме того, в java существует метод super (), который вызывает конструктор родителя.
на Рубин язык у нас есть оба понятия, означающие разные вещи.
ParentClass -> ChildClass
-> это используется для пространства имен
и
SuperClass -> SubClass
-> это используется для наследования
примеры ниже:
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
см. вывод ниже:
C.f1
A - > C. f1 называется
C.f3
C - > C. F3 называется
B - > A::B.f2 называется