Разница между родительским классом и суперклассом

Есть ли разница между родительским классом и суперклассом? Является ли суперкласс просто родительским классом, который не наследуется от других классов?

Ответ 1

Это больше различие в терминологии, идея родительских и дочерних классов или супер и подклассов. Кажется, это зависит от опыта работы с языком программирования и предметной области, от того, какой вы используете, а также от того, когда вы впервые начали заниматься объектно-ориентированным программированием.

В обоих случаях существует класс, родительский класс или суперкласс или базовый класс, из которого происходят другие классы, дочерний класс или подкласс. Дочерний класс или подкласс расширяет родительский класс или суперкласс путем добавления некоторой возможности к существующей возможности расширяемого класса.

super() - это способ создания родительского или суперкласса для класса Java в производном классе.

В первые годы объектно-ориентированного программирования наблюдался значительный отток терминологии, поскольку в этой области работали разные люди, публиковали статьи и книги и разрабатывали объектно-ориентированные языки. Все это было довольно новым и захватывающим, и люди пытались выбрать правильный словарный запас, чтобы использовать разные слова и фразы для выражения объектно-ориентированных концепций.

А благодаря ряду языков объектно-ориентированного программирования, которые были разработаны и приобрели популярность, вокруг языка возникло сообщество с определенным словарем. Поэтому пожилые и более опытные программисты, которые раньше были объектно-ориентированными, могут назвать вещи немного по-другому.

Родитель и ребенок также используются при описании других видов отношений Is-A или Has-A. Например, родительское окно и дочернее окно также используется для оконных систем, в которых окно, дочернее, содержится в другом окне, родительском. Итак, родительское окно имеет дочернее окно.

Ответ 2

Это разные термины для решения одной и той же концепции ООП: наследование. Если класс ChildClass продолжается ParentClass, вы можете сказать:

  • ChildClass родительский класс - ParentClass
  • ParentClass - это суперкласс класса ChildClass

Уровни наследования не имеют никакого отношения к этому, не имеет значения, если сам Суперкласс расширяет другой класс.

Ответ 3

Я бы сказал то же самое.

Возможно, вы захотите провести различие между прямым и косвенным родителем или суперклассом, но я думаю, что оба этих термина также недостаточно ясны. Итак, если это то, что вы пытаетесь выразить, лучше быть явным.

Кроме того, во многих языках программирования ключевое слово "супер" используется для ссылки на единственный (единственный) прямой родительский класс. Но даже там, если вы называете "супер" метод, а прямой родитель не реализует его, он также пузырится вверх.

Ответ 4

Они, по сути, одинаковы. В зависимости от языка изменяется терминология. Родитель может означать непосредственного родителя, в то время как класс Super может означать любой из классов предков. Кроме того, в java существует метод super(), который вызывает родительский конструктор.

Ответ 5

В языке 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 → C.f1 называется

  1. C.f3

C → C.f3, называемый

B → A:: B.f2 называется