父类和超类之间有什么区别吗?超类只是一个不从其他类继承的父类吗?
答案 0 :(得分:7)
这更多的是术语差异,父类和子类或超类和子类的概念。它似乎依赖于编程语言经验和应用程序领域,关于你使用哪一个以及当你第一次开始进入面向对象编程时。
在这两种情况下都有一个类,父类或超类或基类,从中派生出其他类,子类或子类。子类或子类通过向正在扩展的类的现有功能添加一些功能来扩展父类或超类。
super()
是如何在派生类中调用Java类的父类或超类构造函数。
在面向对象编程的最初几年,术语中有相当多的流失,因为各种各样的人在该领域工作并发表论文和书籍并开发了面向对象的语言。这一切都是新的和令人兴奋的,人们试图决定使用适当的词汇,所以他们尝试各种单词和短语来表达面向对象的概念。
随着一些已经开发并获得普及的面向对象编程语言,一个围绕该语言开发的社区具有特定的词汇。如此年长且经验丰富的程序员在早期面向对象时可能会对事情有所不同。
父和子也用于描述其他类型的Is-A或Has-A关系。例如,父窗口和子窗口也用于窗口系统,其中窗口,子窗口包含在另一个窗口中,即父窗口。所以父窗口有一个子窗口。
答案 1 :(得分:3)
它们是解决相同OOP概念的不同术语:继承。如果课程ChildClass
延伸ParentClass
,您可以说:
ChildClass
父类是ParentClass ParentClass
是ChildClass的超类继承级别与此无关,如果Super-Class本身扩展另一个类并不重要。
答案 2 :(得分:2)
我会说它是一样的。
你可能想要区分直接和间接的父类或超类,但我想这两个术语对此也不够清楚。因此,如果这是您要表达的内容,请更好地明确。
此外,许多编程语言都使用“超级”关键字来引用(单个)直接父类。但即使在那里,如果你称之为“超级”方法并且直接父母没有实现它,它也会起泡。
答案 3 :(得分:0)
它们基本相同。根据语言,术语会发生变化。父级可能意味着直接父级,而超级级可能意味着任何祖先级别。另外,在java中,有super()方法,它调用父的构造函数。
答案 4 :(得分:-1)
在 Ruby 语言中,我们有两个概念意味着不同的东西。
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 - &gt; C.f1调用
C.f3
C - &gt; C.f3调用
B - &gt; A :: B.f2调用