2012-10-24 32 views

Odpowiedz

2

Jest to raczej różnica terminologiczna. Idea zajęć dla rodziców i dzieci lub super i podklas. Wydaje się, że zależy to od języka programowania i domeny aplikacji, z której korzystasz.

super() to sposób wywoływania konstruktora nadrzędnego lub super klasy dla klasy Java w klasie pochodnej.

I było sporo odejścia od terminologii sprzed lat, więc starsi i bardziej doświadczeni programiści, którzy wcześnie zajmowali się obiektami, mogą nazywać rzeczy nieco inaczej.

Okno nadrzędne i podrzędne jest również używane w systemach okien, w których okno znajduje się w innym oknie, dzięki czemu terminologia może zostać ponownie wykorzystana.

2

Powiedziałbym, że to to samo.

Być może zechcesz rozróżnić między rodzicem bezpośrednim a pośrednim lub super-klasą, ale sądzę, że te dwa pojęcia również nie są wystarczająco jasne. Więc jeśli to jest to, co próbujesz wyrazić, lepiej bądź konkretny.

Również wiele języków programowania ma słowo kluczowe "super" używane do odnoszenia się do (pojedynczej) bezpośredniej klasy nadrzędnej. Ale nawet tam, jeśli nazwiesz metodę "super", a rodzic bezpośredni jej nie zaimplementuje, to również się rozwija.

0

Są zasadniczo takie same. W zależności od języka zmienia się terminologia. Rodzic może oznaczać bezpośredniego rodzica, podczas gdy klasa Super może oznaczać którąkolwiek z klas przodków. Ponadto w języku Java znajduje się metoda super(), która wywołuje konstruktor nadrzędny.

3

Są to różne terminy dotyczące tej samej koncepcji OOP: dziedziczenie. Jeśli klasa ChildClass rozciąga ParentClass można powiedzieć:

  • ChildClass klasa dominująca jest ParentClass
  • ParentClass jest super-klasę ChildClass

poziomy dziedziczenia nie ma nic do zrobienia, to nie ma znaczenia jeśli sama Super-klasa rozszerza kolejną klasę.

0

W Ruby Język mamy oba pojęcia oznaczają różne rzeczy.

ParentClass -> ChildClass -> ten służy do przestrzeni nazw

i

SuperClass -> SubClass -> ten służy do spadku

Przykłady poniżej:

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 

Zobacz poniższy wynik:

  1. C.f1

A -> C.f1 nazwie

  1. C.f3

C -> C.f3 nazywa

B -> A :: B.f2 nazywa

Powiązane problemy