Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oop 父类和超类之间的区别_Oop_Parent Child - Fatal编程技术网

Oop 父类和超类之间的区别

Oop 父类和超类之间的区别,oop,parent-child,Oop,Parent Child,父类和超类之间有什么区别吗?超级类仅仅是一个不从其他类继承的父类吗?我认为是一样的 您可能想区分直接父类和间接父类或超类,但我想这两个术语在这方面也不够清楚。所以,如果这是你想要表达的,最好是明确的 此外,许多编程语言都使用“super”关键字来引用(单个)直接父类。但是,即使在那里,如果你调用一个“超级”方法,而直接的父级没有实现它,它也会冒泡。它们本质上是一样的。根据语言的不同,术语也会发生变化。父类可以表示直接父类,而超类可以表示任何祖先类。此外,在java中,还有super()方法,它调

父类和超类之间有什么区别吗?超级类仅仅是一个不从其他类继承的父类吗?

我认为是一样的

您可能想区分直接父类和间接父类或超类,但我想这两个术语在这方面也不够清楚。所以,如果这是你想要表达的,最好是明确的


此外,许多编程语言都使用“super”关键字来引用(单个)直接父类。但是,即使在那里,如果你调用一个“超级”方法,而直接的父级没有实现它,它也会冒泡。

它们本质上是一样的。根据语言的不同,术语也会发生变化。父类可以表示直接父类,而超类可以表示任何祖先类。此外,在java中,还有super()方法,它调用父级的构造函数。

它们是不同的术语,用于处理相同的OOP概念:继承。如果class
ChildClass
扩展了
ParentClass
您可以说:

  • ChildClass
    父类是父类
  • ParentClass
    是ChildClass的超类

继承级别与此无关,超级类本身是否扩展了另一个类也无关紧要。

这更多的是术语上的差异,即父类和子类或超级类和子类的概念。这似乎取决于编程语言经验和应用领域,以及您最初开始使用面向对象编程的时间

在这两种情况下,都有一个类,父类、超类或基类,从中派生出其他类、子类或子类。子类或子类通过向被扩展类的现有功能添加一些功能来扩展父类或超类

super()
是如何在派生类中调用Java类的父类或超类构造函数

在面向对象编程的最初几年中,由于在该领域工作、发表论文和书籍以及开发面向对象语言的各种人员,术语有相当多的变动。这一切都是非常新鲜和令人兴奋的,人们试图决定使用合适的词汇表,所以他们尝试使用各种词汇和短语来表达面向对象的概念

随着许多面向对象编程语言的开发和普及,一个社区围绕着具有特定词汇表的语言发展起来。因此,较早进入面向对象领域的年长且经验丰富的程序员可能会认为事情有点不同


父和子也用于描述其他类型的is-A或Has-A关系。例如,父窗口和子窗口也用于窗口系统,其中一个窗口(子窗口)包含在另一个窗口(父窗口)中。因此父窗口有一个子窗口。

在Ruby语言中,两个概念都有不同的含义

ParentClass->ChildClass
->这用于名称空间

超类->子类
->用于继承

举例如下:

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
A类
def self.f1
将“A->{self.name}.f1调用”
结束
#B是A的儿童班
B类
def self.f2
将“B->{self.name}.f2调用”
结束
结束
结束
#C是A的子类
C类{self.name}.f3调用”
B.f2
结束
结束
请参见下面的输出:

  • C.f1
  • A->C.f1调用

  • C.f3
  • C->C.f3调用


    B->A::B.f2调用

    这是不正确的。您刚刚决定将“子类”用于大多数人所称的内部或嵌套类。这仅仅是你和你的同事所采用的一种地方惯例。Ruby核心库在模块上没有定义任何方法,允许您(特别是)获取子类(即子类、子类)或内部类。Ruby核心文档中使用的术语是“超类”和“子类”。“子类”或“父类”这两个术语的任何使用都只是俗语(即当地惯例)。